JFrame nicht verstecken, wenn die setVisible-Methode(false)
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");
}
}
nachdem die setVisible-Methode(false) - Befehl. Die JFrame-Fenster zeigen, immer noch auf meinem desktop.
Wie kann ich das beheben ?
InformationsquelleAutor user176136 | 2009-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie ein weiteres
JFrame
in Ihrem Konstruktor. Vorausgesetzt, was Sie wollen, ist IhreFrame
Klasse, unsichtbar zu sein, dies zu tun:Viel besser zu verlieren, die unnötige Unterklassen.
(Und Sie fehlt der
EventQueue.invokeLater
boilerplate inmain
.)InformationsquelleAutor JRL
Problem ist, dass deine main-Methode verwendet verschiedene JFrame, dass Ihr Konstruktor. Ihr Frame-Konstruktor erzeugt neue JFrame-Instanz (mit new JFrame). Wenn Sie call f.setVisible-Methode(false), es geht um den Rahmen, nicht aber erstellt JFrame.
InformationsquelleAutor Peter Štibraný
Hier das problem, dass Ihre "Frame" - Klasse instanciates ein neues JFrame. Aufruf von setVisible-Methode auf den Rahmen berührt nicht das JFrame wird angezeigt.
Können Sie es beheben, indem Sie entweder nur mit einem JFrame-Instanz, oder nur Unterklassen. Nicht beides.
InformationsquelleAutor Timothy Pratley
Neben den zwei verschiedenen frames, auf die Sie sich beziehen (dies ist das problem beantwortet https://stackoverflow.com/a/1450488/1326149), sollten Sie alle Grafik-Operationen in der EVT-thread (weil Ihr Programm, auch wenn es funktioniert großartig für Sie sein könnte, nicht portabel auf verschiedenen Plattformen).
Dies ist eine Seite Antwort, aber ich fing mit diesem bestimmten problem beantworten. Haben Sie bemerkt, "die beiden unterschiedlichen frames", und der link ? Ich wäre nicht überrascht, wenn es ist eine Plattform, auf der es immer noch nicht funktioniert nach der Korrektur der zwei-frames-problem wegen des falschen threads Gebrauch.
Ich denke, dass Thema starter wird es nie wissen, denn 2 Jahre bleiben, seit er gesehen wurde hier zum letzten mal.
ja, es ist eine ziemlich alte Frage (ich habe es nicht gemerkt früher), aber die Antworten sind hier für immer (das Internet vergisst nie). Es sieht bin ich verdienen der Archäologe Abzeichen 🙂 . Ich werde vorsichtiger sein in der Zukunft.
InformationsquelleAutor digital_infinity