Swing JDialog mit static-Funktion anzeigen -> Rückgabewert

jakob190590

Aktives Mitglied
Hallo,

der Titel sagt noch nicht alles...

ich brauche einen (eigenen) JDialog den ich (wie bei JOptionPane.showConfirmDialog(...)) mit einer static-Funktion aufrufen kann. Und diese Funktion soll mir als Rückgabewert einen Integer liefern mit
null, falls "Abbrechen" oder "Schließen" oder
einer Zahl, falls "OK"

Ich weiß nicht was in meiner Funktion
public static Integer showDialog()
stehen muss und hab auch irgendwie den Quellcode von JOptionPane.showConfirmDialog() nicht überrissen. Wie macht man, dass die Funktion showDialog() eben solange wartet bis der Benutzer "OK", "Abbrechen" oder "Schließen" geklickt hat und erst dann return'd?

Vielen Dank schon mal!
jakob
 
Erstelle einfach einen modalen Dialog, füge da eben die Komponenten hinzu die du brauchst(Buttons,Textfeld,etc.) und mache diesen sichtbar. Listener ran, Dialog schließen(dispose), und dann je nachdem was geklickt wurde auswerten: eben null oder bei OK halt so etwas wie return parseInt...
 
ah! Dann war das, was ich bereits fabriziert habe, schon fast richtig...

bei mir stand aber folgendes im Konstruktor:
Java:
this.setVisible(true); // falsche reihenfolge
this.setModal(true);

Aber in der API steht, dass (natürlich) setModal() nicht wirkt, wenn das Fenster schon sichtbar ist.
(Und dann steht da auch noch dass ich lieber setModalityType() nehmen soll.)

Eins noch,
kann ich wenn z.B. der Button OK geklickt wird, gleich dispose() aufrufen oder sollte man davor noch setVisible(false) aufrufen?

Danke!
 
(Und dann steht da auch noch dass ich lieber setModalityType() nehmen soll.)
Wenn du den Konstruktor vom JDialog nimmst, wo man den
Code:
boolean modal
angeben kann, wird das automatisch gemacht. In Dialog steht dann so etwas:
modal ? DEFAULT_MODALITY_TYPE : ModalityType.MODELESS

kann ich wenn z.B. der Button OK geklickt wird, gleich dispose() aufrufen oder sollte man davor noch setVisible(false) aufrufen?

braucht man afaik nicht.
 

Neue Themen


Zurück
Oben