Swing Konstruktor wird nicht rechtzeitig fertig?

SimProtect

Aktives Mitglied
Hallo Leute,

Ich habe nochmal ein kurzes Problem: Ich habe einen WindowAdapter implementiert, welcher WindowClosing abfängt. Anstatt des Close-Vorganges soll ein Popup erscheinen, welches fragt, ob man das Programm tatsächlich beenden möchte und ob man es ohne zu speichern beenden möchte.

Es ist also ein simpler JFrame mit einem Title und drei Buttons ("Save", "Exit", "Cancel").

Im entsprechenden Listener wird folgender Code ausgeführt:

Code:
		ApplicationEndPopup popup = new ApplicationEndPopup(related);
		popup.displayPopup();
		while(waitingForPopup){
			waitingForPopup = !popup.getDone();
		}

Nun wird der Popup-Frame partiell aufgebaut. Title ist gesetzt, Größe ist festgelegt, aber die Buttons ihrerseits sind noch nicht hinzugefügt. Zu diesem Zeitpunkt hängt das Programm bereits in der While-Schleife fest.

Setze ich zwischen den Konstruktor-Aufruf und die display()-Anweisung ein wait(), fliegt mir zwar eine Exception um die Ohren (diejenige, die man auch gezwungen wird, abzufangen), aber der Frame wird korrekt aufgebaut.

Nun bin ich auf ein solches Problem noch nie gestoßen (zumindest nicht in Java). Ist es tatsächlich möglich, dass der Konstruktor-Call noch nicht vollständig abgearbeitet worden ist und schon die nächste Methode getriggert wird?
 

dayaftereh

Top Contributor
Du weißt das Swing Singel Thread ist. Es gibt nur einen Thread und das ist der EventDispatcherThread. Das heißt hier kann nix parallel ausgeführt werden. Außer dein Main Thread macht noch was ?

Edit:

Ah jetzt sehe ich was du machst. Du willst das deine Methode Blockiert bis das Popup geschlossen wird. Aber das Blockiert den EventDispatcherThread und deswegen werden deine Buttons nicht gezeichnet. Schau mal nach einem Modalen Dialog oder nutze doch einfach JOptionPane?

Java:
//Custom button text
Object[] options = {"Yes, please",
                    "No, thanks",
                    "No eggs, no ham!"};
int n = JOptionPane.showOptionDialog(frame,
    "Would you like some green eggs to go "
    + "with that ham?",
    "A Silly Question",
    JOptionPane.YES_NO_CANCEL_OPTION,
    JOptionPane.QUESTION_MESSAGE,
    null,
    options,
    options[2]);
 
Zuletzt bearbeitet:

SimProtect

Aktives Mitglied
Also im Prinzip handelt es sich um eine zu diesem Zeitpunkt untätige Applikation (selbst ein JFrame). Auf diesem Frame ist besagter Listener (WindowAdapter) registriert (als einziger Listener), der ausschließlich die Methode WindowsClosing überschreibt (oben gezeigter Code).

Es wird zu keinem Zeitpunkt auf die übrigenen Elemente zugegriffen. Also dies ist die gesamte Funktion des Listeners. Der Konstruktor des Popups erzeugt auch nur die JButtons (derzeit noch ohne Funktion), legen die Positionen fest und fügt diese dem Frame hinzu. Zusätzlich wird ein Boolean implementiert, der weiter unten in der Schleife abgefragt wird.
 

SimProtect

Aktives Mitglied
Tatsächlich - habe es gerade nochmal mit Breakpoints geprüft - werden alle Codesegmente in der richtigen Reihenfolge und rechtzeitig ausgeführt. Dennoch funktioniert oben gezeigter Code ohne ein wait() nicht. Es werden die Buttons nicht dargestellt...
 

dayaftereh

Top Contributor
Glaube du hast meine Antwort nicht verstanden. Du machst eine while true im EventDispatcherThread. Das bedeutet der Thread kann nix neu zeichnen bzw auf Events reagieren da er in der while true, deswegen hängt deine GUI und Deswegen nutzt man Modale Fenster bzw Dialoge...

EDIT

Mann könnte auch ein Callback an dein Fenster machen, was beim Schließen aufgerufen wird. Damit musst du nicht aktiv warten..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
F Konstruktor für "Vier Gewinnt" AWT, Swing, JavaFX & SWT 10
H JavaFX aus der .fxml Datei einen Konstruktor bedienen AWT, Swing, JavaFX & SWT 3
A JTable in Konstruktor? AWT, Swing, JavaFX & SWT 2
K Swing Gegner Konstruktor Problem AWT, Swing, JavaFX & SWT 2
MiMa Grafikfenster mit Konstruktor AWT, Swing, JavaFX & SWT 5
M Swing JButton-Konstruktor Icon-Parameter (Verständnisfrage) AWT, Swing, JavaFX & SWT 7
S Konstruktor kürzen AWT, Swing, JavaFX & SWT 4
S SWT Konstruktor anonyme Klasse AWT, Swing, JavaFX & SWT 10
C Kann Konstruktor von eigenem TableModel nicht nutzen AWT, Swing, JavaFX & SWT 2
J Konstruktor soll was zurueckgeben AWT, Swing, JavaFX & SWT 3
K falscher konstruktor? AWT, Swing, JavaFX & SWT 2
D Konstruktor von TableLayout AWT, Swing, JavaFX & SWT 8
F Fenster über Konstruktor neu laden? AWT, Swing, JavaFX & SWT 11
M JComboBox Konstruktor mit Objektfeld AWT, Swing, JavaFX & SWT 2
J JDialog und dessen Konstruktor JDialog(JFrame owner) AWT, Swing, JavaFX & SWT 2
G JTable mit Vektor-Konstruktor erzeugen?! AWT, Swing, JavaFX & SWT 3
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
S Next_Button wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 6
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
J setOnCloseRequest wird nicht ausgelöst AWT, Swing, JavaFX & SWT 3
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
B JavaFX Bei Scenen-Wechsel im primaryStage wird aktuelle Fenstergröße nicht mit übernommen AWT, Swing, JavaFX & SWT 16
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
kodela BufferStrategy wird nicht gefunden AWT, Swing, JavaFX & SWT 5
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S ImageView wird dem Gridpane nicht zugefügt AWT, Swing, JavaFX & SWT 1
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
T JavaFX Nach Zoomen wird an falscher Stelle gezeichnet AWT, Swing, JavaFX & SWT 0
kodela Swing Letzte Änderung in der Tabelle wird nicht gespeichert AWT, Swing, JavaFX & SWT 5
cool_brivk24 AWT BufferedImage wird nicht geladen AWT, Swing, JavaFX & SWT 17
S JavaFX Wird es überhaupt genutzt? AWT, Swing, JavaFX & SWT 3
FRI3ND GUI wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Aus welchen Grund wird der Button nicht angezeigt im GridPane? AWT, Swing, JavaFX & SWT 1
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
E Swing Liste in Scrollpane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Controller wird zu groß, was tun ? AWT, Swing, JavaFX & SWT 5
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
T Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
M Aktion ausführen wenn ein JRadiobutton deselektiert wird. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
zhermann TableView wird nicht gefüllt AWT, Swing, JavaFX & SWT 14
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
zhermann JavaFX Main App wird nicht geöffnet AWT, Swing, JavaFX & SWT 6
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
4 Swing JLabel wird ,,abgehackt" AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
A Swing Tabelle wird bei Betätigung des Button nicht befüllt AWT, Swing, JavaFX & SWT 17
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
M Swing Inhalt meines JTables wird falsch dargestellt AWT, Swing, JavaFX & SWT 8
T Default Table wird nicht angezeigt AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben