Frage

import javax.swing.*;

class Frame extends JFrame{
    Frame() {
        JFrame j = new JFrame();
        j.setBounds(100, 200, 120, 120);
        j.setTitle("null");
        j.setVisible(true);
        j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

public class test001 {

    public static void main (String Args[]){
        Frame f = new Frame();
         System.out.print("Visible = True");

        f.setVisible(false);
        System.out.print("Visible = false");
    }
}

nach dem setVisible (false) Befehl. Die JFrame Fenster zeigen immer noch auf meinem Schreibtisch. Wie kann ich das Problem beheben?

War es hilfreich?

Lösung

Sie erstellen eine andere JFrame in Ihrem Konstruktor. Unter der Annahme, was Sie wollen, ist Ihre Frame Klasse unsichtbar zu sein, dies zu tun:

class Frame extends JFrame {

   Frame() {
      setBounds(100, 200, 120, 120);
      setTitle("null");
      setVisible(true);
      setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
   }
}

public class test001 {

   public static void main(String Args[]) {
      Frame f = new Frame();
      System.out.print("Visible = True");

      f.setVisible(false);
      System.out.print("Visible = false");
   }
}

Andere Tipps

Das Problem ist, dass Ihre Hauptmethode verwendet verschiedene JFrame, dass Ihr Konstruktor. Ihr Rahmen Konstruktor erstellt neue JFrame-Instanz (mit neuer JFrame). Wenn Sie f.setVisible (false) nennen, ist es an den Rahmen geht, aber nicht erstellt JFrame.

Das Problem hier ist, dass Ihre „Frame“ Klasse instanciates eine neue JFrame. Der Aufruf setVisible auf den Rahmen berührt nicht die JFrame, die gezeigt wird.

Sie können das Problem beheben, indem entweder nur eine JFrame Instanz verwenden, oder einfach nur Subklassen. Nicht beides tun.

Neben den beiden unterschiedlichen Bilder, die Sie beziehen sich auf (das ist das Problem beantwortet https://stackoverflow.com/a/1450488/ 1326149 ), sollten Sie alle Grafikoperationen in dem EVT-Thread tun (weil Ihr Programm selbst wenn es funktioniert gut für Sie könnten auf verschiedene Plattformen nicht tragbar sein).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top