WindowListener und ActionListener

Manuel Hegemann

Erfahrenes Mitglied
Hallo zusammen,

innerhalb meines ActionListeners, der auf einem JMenu liegt, rufe ich die Methode buildDialogListener auf und übergebe diesem den entsprechenden Dialog. Das Hauptfenster, JFrame, wird nach dem Aufruf dieser Methode auf setEnabled(false) gesetzt.

In der angesprochenen buildDialogListener Methode wird ein WindowListener für den übergebenen Dialog erzeugt und bei windowClosed() wird das Hauptfenster wieder setEnabled(true) gesetzt. Alle Dialoge sind auf DO_NOTHING_ON_CLOSE gestellt.

Jetzt das Problem:
Beim ersten Aufruf funktioniert alles Wunderbar, der Dialog geht auf und das Hauptfenster ist disabled. Schließt man den Dialog, ist das Hauptfenster auch wieder enabeld. Soweit, so gut. Beim nächsten Aufruf eines Dialogs jedoch, wird das Hauptfenster nicht mehr disabled gesetzt, aus Gründen, die ich absolut nicht nachvollziehen kann.

Hier der entsprechende Codeteil:

Der ActionListener:
Code:
if (e.getActionCommand().equals("newCat")) {
					AddCategoryWindow addCategoryWindow = new AddCategoryWindow();
					buildDialogListener(addCategoryWindow);
					addCategoryWindow.addWindowListener(dialogListener);
					setEnabled(false);
				} else if (e.getActionCommand().equals("newItem")) {
					AddItemWindow addItemWindow = new AddItemWindow();
					buildDialogListener(addItemWindow);
					addItemWindow.addWindowListener(dialogListener);
					setEnabled(false);
				}

Die Methode buildDialogListener:
Code:
private void buildDialogListener(final JDialog dialog) {
		dialogListener = new WindowListener() {

			public void windowActivated(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			public void windowClosed(WindowEvent arg0) {
				setEnabled(true);
				dialog.dispose();
			}

			public void windowClosing(WindowEvent arg0) {
				confirmExitDialogOperation();
			}

			public void windowDeactivated(WindowEvent arg0) {

			}

			public void windowDeiconified(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			public void windowIconified(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			public void windowOpened(WindowEvent arg0) {
				// TODO Auto-generated method stub
				
			}
			
		};
	}

Wäre super, wenn jmd. den Fehler findet könnte oder ihn zumindest soweit einschränkt, dass ich ihn herausfinden kann.

Vielen Dank im Voraus.
BigManu
 
Hallo,

es sieht so aus, als würdest du einen modalen Dialog nachbauen wollen. Warum machst du deinen Dialog nicht einfach modal?

MFG

zEriX
 
Hallo,

erstmal danke für die schnelle Antwort. Aber meines Wissens funktionieren modale Dialoge nur mit AWT (Dialog und Frame).
Leider benutze ich aber Swing (JDialog und JFrame) und möchte das jetzt ungerne umbauen :D Täusche ich mich vielleicht, sind modale Dialoge auch unter Swing möglich?

Viele Grüße,
BigManu
 
Ein Blick in die API hätte dir geholfen. :)

Swing ist eine Erweiterung von AWT. Warum sollte dann da AWT eingeschränkt werden?

Also es gibt modale Dialoge bei Swing.

MFG

zEriX
 
Zurück