showConfirmDialog mit x schließen, Anwendung weiterlaufen lassen

Duckemai

Mitglied
Hallo,
wie kann ich ein JOptionPane.showConfirmDialog mit dem X oben rechts schließen, ohne das gleich
die ganze Anwendung geschlossen wird?

BSP:
//Fenster schließen mit X
public WindowListener Fensterwaechter = new WindowAdapter()

{
public void windowClosing (WindowEvent Ereignis)
{
if (statusSpeichern)
{
int Wahl = JOptionPane.showConfirmDialog(null, "Eintrag speichern?", "Book",
JOptionPane.YES_NO_OPTION);

if (Wahl == JOptionPane.YES_OPTION)
{
secureWriteText(Pfad);
writeText(Pfad + datei);
System.exit(0);
}//if

if (Wahl == JOptionPane.NO_OPTION)
{
System.exit(0);
}

if (Wahl == JOptionPane.CLOSED_OPTION) //X oben rechts wird gedrückt
{
//Nur den "showConfirmDialog" schließen. Anwendung weiterlaufen lassen! }
}//if
}//WindowsListener
};

Vielen Dank!
 
Die Anwendung wird nicht geschlossen, die JOptionPane gibt -1 zurück wenn der Dialog über das "X" geschlossen wird.

Beispiel:

Java:
import javax.swing.JOptionPane;

public class NewJFrame extends javax.swing.JFrame {
    public NewJFrame() {
        initComponents();
    }

    private void initComponents() {

        jLabel2 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();

        jLabel2.setText("jLabel2");

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new java.awt.GridBagLayout());

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1, new java.awt.GridBagConstraints());

        pack();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        int wahl = JOptionPane.showConfirmDialog(null, "Eintrag speichern?", "Book",JOptionPane.YES_NO_OPTION);
        System.out.println("ausgewählt:" +wahl);
    }


    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel2;

}
 
Fassy, hast Du mir jetzt einen Schreck eingejagt! Habe Deinen Quellcode gesehen und fragte mich schon: "Wie soll ich dass jetzt in mein Programm quetschen und was tut eigentlich was?"
Bis ich dann feststellte , dass ich lediglich diese Zeile von Dir:

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
ersetzen muss durch:
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);

um sie dann an meine rot markierte Stelle einzutragen.

Genau das habe ich gesucht.
Vielen Dank
 
Das bezieht sich aber auf den JFrame und hat nichts mit der Rückgabe der JOptionPane zu tun....


Egal - wenn es dir geholfen hat ;)
 
Zurück