PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wie programm pausieren während JDialog geöffnet ist?


AHF
2003-12-14, 13:34:45
grüße,

ich möchte, dass mein programm solange pausiert, bis der JDialog geschlossen ist.


texDialog = new TextureDialog(); // custom JDialog

//hier soll die pause rein

if(!texDialog.getCancel()) // wenn Dialog nicht mit cancel abgebrochen wurde
{
doSomething()...
}


das problem ist, er springt sofort nachdem der dialog gestartet ist zur if-abfrage. und while endlos-schleifen hängen mein system auf...

der dialog (ausschnitte):

public class TextureDialog extends JDialog implements ActionListener
{
private boolean cancel = true;
...
public void actionPerformed (ActionEvent e)
{
if (e.getSource().equals(okButton))
{
cancel = false;
dispose();
return;
}
if (e.getSource().equals(cancelButton))
{
cancel = true;
dispose();
return;
}
}
...
public boolean getCancel(){return cancel;}
}

EgonOlsen
2003-12-14, 13:46:15
Mach ihn mal modal mit setModal(true). Methode müsste in Dialog zu finden sein IIRC.

AHF
2003-12-14, 17:39:27
danke, das hat funktioniert...nachdem ich herausgefunden habe, dass das nur mit einem JFrame als konstruktorparameter geht

EgonOlsen
2003-12-14, 18:15:26
??? Ein JDialog ist bereits ein Dialog. Du musst also nicht explizit eine Instanz von Dialog erzeugen. Und da dein TextureDialog von JDialog erbt, sollte ein texDialog.setModal(true); eigentlich funktionieren.
Ich meinte nur, dass die Methode aus Dialog kommt (falls man in der API nachgucken will oder so), nicht das du explizit einen erzeugen musst.

AHF
2003-12-14, 20:29:28
es funktioniert ja auch. nur muss man eben dem dialog einen JFrame als Parameter übergeben, damit es so funktioniert, wie es soll.

texDialog = new TextureDialog(main.getFrame()); // custom JDialog


public class TextureDialog extends JDialog implements ActionListener
{
...
setModal(true);
...
}