Java modalen JDialog ausblenden

_StH_

Newbie
Registriert
Dez. 2007
Beiträge
4
Hallo,

ich möchte aus einen modalen JDialog einen weiteren modalen JDialog aufrufen. Ist der zweite Dialog sichtbar soll der erste ausgeblendet werden. Die Methode, die den ersten Dialog ruft, soll erst weitermachen, wenn der Dialog1 auch mit dispose() geschlossen wurde.

Dabei tritt folgendes Problem auf, wenn ich vor dem Aufruf des zweiten Dialog ein this.setVisible(false); setzen, läuft die rufende Methode von Dialog1 weiter.

Auszug aus Start.java
PHP:
	public static void main(String[] args) {
		
		Dialog1 d = new Dialog1(null,true);
		d.setVisible(true);
		
		JOptionPane.showMessageDialog(null,"Diese Info darf/soll erst nach dem Ende von Dialog1 erscheinen.","Test",JOptionPane.INFORMATION_MESSAGE);

	}

Auszug aus Dialog1.java
PHP:
	jB_D2 = new JButton();
	jB_D2.setText("Dialog2");
	jB_D2.addActionListener(new java.awt.event.ActionListener() {
	   public void actionPerformed(java.awt.event.ActionEvent e) {
	    	vDialog2rufen();
	   }
	});
PHP:
	private void vDialog2rufen() {
		this.setVisible(false);
		Dialog2 d = new Dialog2(this,true);
		d.setVisible(true);
		this.setVisible(true);
	}

Was mache ich falsch? Tipps? Oder bin ich mit this.setVisible(false) vollkommen auf dem Holzweg?
 

Anhänge

Also wie ich das kurz überblicke, dann liegt der Fehler bei der private method vRufeDialog2():
Da möchtest du "this" unsichtbar machen, Dialog2 zeigen... dann aber machst du "this" wieder sichtbar. Das sollte der Fehler sein.
 
Tja, nach dem this.setVisible(false) läuft die main-Mehtode weiter. Aber wie könnte man sonst noch den Dialog ausblenden, ohne setVisible? Das schein ja mehr zu Regeln als nur die Sichtbarkeit.
 
Du musst eine nicht statische Klasse erstellen, die in der main instantiiert wird. Damit verlässt du den statischen Kontext aus der Main. Z.B. MyAppDemo.class erstellen. Dieser gibst Du deine zwei Dialoge als members und handelst über eine init in der MyAppDemo z.B. den Start des ersten Dialogs. Es ist Konvention, dass jeder Dialog geeignete initAndshow() - Methode bzw. clearAndHide() - Methode hat, um deren "Kommen und Gehen" zu handlen. Sieh dir einfach auch mal die Samples auf der sun-Seite an. Immer exzellentes Material dabei.
http://java.sun.com/docs/books/tutorial/uiswing/examples/components/index.html
 
Zurück
Oben