JDialog soll nicht schließbar sein

Alles zu NetBeans als RCP-Platform

Moderator: wegus

Antworten
thorsten

JDialog soll nicht schließbar sein

Beitrag von thorsten » 22.03.2007, 08:49

Hallo,

ich habe wieder mal eine Frage. Wenn ich bei einem JDialog als defaultCloseOperation "DO_NOTHING_ON_CLOSE" angebe, lässt sich dieser nicht mehr durch Klicken des [X] - Buttons in der Window-Titelleiste schließen, zumindest in Standard-Swing Applikationen.

In der Netbeans-Platform wird das Dialog-Fenster aber trotzdem geschlossen. Warum ist das so und wie kann ich das gewünschte Verhalten bekommen? Ich gebe mal ein Beispiel-Code-Schnipsel an:

Code: Alles auswählen


JDialog dialog = new JDialog(frame, "Klicke Button", true);
JOptionPane optionPane = new JOptionPane("Weitermachen?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
dialog.setContentPane(optionPane);
dialog.setVisible(true);
dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

Man (bzw. ich) würde erwarten, dass nichts beim Drücken des [X]-Buttons passiert, aber dem ist nicht so, der Dialog wird geschlossen.

Weiß jemand Rat?

Benutzeravatar
stophi
Beiträge: 150
Registriert: 02.03.2007, 07:32
Wohnort: München
Kontaktdaten:

Beitrag von stophi » 22.03.2007, 11:37

Hi Thorsten,

ich bin gerade dabei, sowas ähnliches zu erforschen und habe langsam einen Verdacht, wie es funktionieren könnte. (Kann aber auch partiell oder sogar alles falsch sein).
Für dein Dialogfenster musst du eine Containerklasse erstellen, ich glaube dafür gibt es die Klasse "BeanNode".
Jedenfalls... Im Konstruktor von deinem Node kannst du dann ein Cookie hinzufügen, das sieht dann ungefähr so aus:

Code: Alles auswählen

public MyBeanNode() {
  // super...
  getCookieSet().add(new CloseCookie() {
    public void close() {
      //tue nichts
    });
}
http://www.netbeans.org/download/dev/ja ... tml#cookie

Benutzeravatar
csc
Beiträge: 172
Registriert: 05.12.2006, 12:06
Wohnort: Bremen/Göttingen
Kontaktdaten:

Beitrag von csc » 22.03.2007, 11:47

Auf den ersten Blick würde ich sagen, dass du die DefaultCloseOperation erst setzt, wenn du das Fenster schon angezeigt hast.
Probier das mal:

Code: Alles auswählen

JDialog dialog = new JDialog(frame, "Klicke Button", true);
JOptionPane optionPane = new JOptionPane("Weitermachen?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
dialog.setContentPane(optionPane);
dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); 
dialog.setVisible(true);

thorsten

Beitrag von thorsten » 22.03.2007, 12:47

Hallo csc,

hast Recht, die Reihenfolge ist entscheidend. Das wusste ich gar nicht :oops: und habe es bisher eher zufällig richtig gemacht.

Vielen Dank für die Hilfe!

Gruß,
Thorsten

Antworten