Klick auf X bei JInternalFrame abfangen.

barsiq

Mitglied
Tagchen,

ich habe ein Problem, bei dem ich nicht weiß obs geht.

Die JInternalFrame's in unserer Anwendung haben ein Zustand.
Und bei bestimmten Zuständen soll der Klick auf den "X" des Frames ihn nicht schließen, sondern offen lassen (mit neuen Zustand, Inhalt, blah-blah-blah).

Code:
		this.addInternalFrameListener(new InternalFrameAdapter(){
			@Override
			public void internalFrameClosing(InternalFrameEvent e) {
				switch (Status) {
				case ANRUF:
				case BELAUSCHT :
				case NOTRUF:
					...
					dispose();
					break;
				case VERBINDEN:
					changeStatus(DHPCallType.ANRUF, CALL);
					break;
				case JUKEBOX:					
				case NEUANRUF:
					break;
				default:
					break;
				}
			}
		});

Das Debugen zeigt daß es wohl darein gelaufen wird, nur schließt sich das Fensterchen.#
Kann man das abstellen und es dargestellt lassen?
 
Hi,

ich hoffe dies hilft dir etwas weiter:
Code:
/* Sorgt dafür, dass der kleine schließen-Button links oben (x) keinen Effekt hat */
   this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
(steht in meiner JFrame, bzw JDialog Klasse, daher this)
 
Moin!
Hast du auch
Code:
yourInternalFrame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE)
gesetzt?
Das bewirkt, das sich dein InternalFrame nichts tut, wenn man auf das "X" klickt.. der FrameListener reagiert natürlich weiterhin auf das Event....

*grüssle*
MeinerEiner

Edit: Na da war wohl jemand schneller...
 
Joar ich würde (auch) Die DefaultCloseOperation auf null setzen

also JInternalFrame.setDefaultCloseOperation(JInternalFrame.DO_NOTHING_ON_CLOSE);

Aber vlt hast du auch was falschgemacht bei dem Notruf, da steht ein dispose(); !

MfG Bodo


edit: Leute ich bin jung last mir auch Lorbeeren
 
Ein sehr netter Ansatz, nur läßt sich dann das Fenster niemehr schließen, es wird nicht mehr in den FrameListener gesprungen, wenn ich
Code:
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
meinem Constructor anfüge.

Ich muß erreichen, daß nur einige der Zustände sich nicht schließen lassen dürfen.
 
Also, genau so gelöst wie hier vorgeschlagen.

Der Constructor bekommt eine Anweisung
Code:
this.setDefaultCloseOperation(JInternalFrame.DO_NOTHING_ON_CLOSE);

Der InternalFrameListener bekommt noch in den Fällen, wo das Fenster geschloßen werden soll, ein dispose().

Code:
		this.addInternalFrameListener(new InternalFrameAdapter(){
			@Override
			public void internalFrameClosing(InternalFrameEvent e) {
				switch (Status) {
				case ANRUF:
				case BELAUSCHT :
				case NOTRUF:
					...
					dispose();
					break;
				case VERBINDEN:					
					changeStatus(DHPCallType.ANRUF, CALL);
					break;					
				case JUKEBOX:					
				case NEUANRUF:
					dispose();
					break;
				}
			}
		});
 
Zurück