JFrame, JOptionPane - vor dem Schließen Benutzer fragen

Status
Nicht offen für weitere Antworten.

ulr!ch

Bekanntes Mitglied
Hi JavaGemeinde,

ich möchte gerne, wenn man den Frame schließt (Klicken auf das kleine rote Kreuz unter Windows XP) einen JOptionPane zur Bestätigung einblenden, ob der User auch wirklich sicher ist, dass er das Prog beenden möchte und nicht etwa unabsichtlich darauf geklickt hat. Wie mache ich das?
Hier der Code:
Code:
  public static void main(String args[]) throws Exception {
    JFrame frame = new ABC();
    frame.pack();
    frame.setVisible(true);
    frame.setExtendedState(MAXIMIZED_BOTH);
    frame.setResizable(false);
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
	int resultBeenden = JOptionPane.showConfirmDialog(this, "<html>Wollen Sie das Programm [b]wirklich[/b] beenden?</html>", "ABC", 0, 2);
	if (resultBeenden==JOptionPane.YES_OPTION) {
	  System.exit(0);
	}
	    else if (result_beenden==JOptionPane.NO_OPTION) {}      }
    });
  }
Aber das "this" stimmt "natürlich" nicht, frame habe ich schon ausprobiert. Vielleicht bin ich völlig auf dem Holzweg, aber weiß jemand, was ich meine?

By<e Ulrich

L-ectron-X hat den Titel angepasst.
 

spoensche

Mitglied
Anstatt der zahlen (0,2) empfehle ich die in der klasse JOptionPane vordefinierten öffentlichen integer optionen zu benutzen, siehe dokumentation.
Du musst "frame" nehmen, weil das JFrame object das übergeordnete eltern object (container bzw. component) darstellt. "this" kannst du benutzten, wenn deine klasse von JFrame erbt.

Ein gutes leicht verständliches kostenloses java buch findest du hier :
http://www.galileocomputing.de/openbook/javainsel4/

So sollte es funktionieren:
Code:
//frame ist das eltern objekt des JOptionPanes
 int resultBeenden = JOptionPane.showInternalConfirmDialog(frame, "Wollen Sie das Programm wirklich beenden?", "ABC", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);
   if (resultBeenden==JOptionPane.YES_OPTION) {
     System.exit(0);
   }
 

ulr!ch

Bekanntes Mitglied
spoensche hat gesagt.:
So sollte es funktionieren:
Mit dem kleinen Schönheitsfehler, dass das nicht funktioniert, wie ich bereits in der Frage geschrieben hatte.
Altbekannte Fehlermeldung: aus einer verschachtelten Klasse kann nicht auf eine lokale Varible zugegriffen werden...
Wenn ich die Variable als global definiere, dann kommt bekannte non-static / static - Fehlermeldung.
Und ja, ich habe das hier in der FAQ auch gelesen.
Aber hier verhält es sich irgendwie anders, weil die abc gleichzeitig die Hauptklasse ist. Kann ich das dann überhaupt global definieren?
Code:
public class abc extends JFrame implements ActionListener {
  abc frame = new abc();
[...]
  public static void main(String args[]) throws Exception {
    frame.pack();
    frame.setVisible(true);
    frame.setExtendedState(MAXIMIZED_BOTH);
[...]
:? Irgendetwas habe ich da nicht verstanden.
Für Anregungen dankbar,

Ulrich
 

spoensche

Mitglied
Du brauchst nicht noch ein extra frame objekt anzulegen, sondern kannst mit dem aufruf der methode super() im Konstruktor der klasse abc sämtliche methoden und eigenschaften von jframe erben.
Code:
public ABC extends JFrame implements ActionListener {
        public ABC() {
            //instantiert das eltern object mit dem konstruktor der als übergabe den parameter title erwartet und sorgt für 
            // für die vererbung.

            super("Mein erstes Fenster");

            try {
                //initialisiert die komponenten, die dem fenster hinzugefügt werden sollen.
                initComponents();
            }
            catch (Exception e) {
                 e.printStackTrace();
            }
        }

        private void initComponents() throws Exception {
              setSize(250,600);
              setVisible(true);
              getContentPane().setLayout(new BorderLayout());

              ....
              //weitere komponenten

             show(),
        }

        public static void main(String[] arg) {
             new ABC();
        }
}
 

ulr!ch

Bekanntes Mitglied
:?:
Sorry, vielleicht bin ich ja echt zu blöd, aber wo soll denn da jetzt das JOptionPane.showConfirmDialog(xxx ...) hin?
Da habe ich doch genau dasselbe Problem. In die Klasse "private void initComponents()" ? Wie kann ich das "referebzieren"?

By<e Ulrich
PS: BTW show ist als "deprecated" eingestuft.
 

sisko78

Bekanntes Mitglied
z.b. so:

Code:
private void initComponents() throws Exception {
        setSize(250, 600);
        setVisible(true);
        getContentPane().setLayout(new BorderLayout());
        setExtendedState(MAXIMIZED_BOTH);
        setResizable(false);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                int resultBeenden = JOptionPane.showConfirmDialog(ABC.this,
                        "<html>Wollen Sie das Programm [b]wirklich[/b] beenden?</html>",
                        "ABC", 0, 2);
                if (resultBeenden == JOptionPane.YES_OPTION) {
                    System.exit(0);
                } else if (resultBeenden == JOptionPane.NO_OPTION) {}
            }
        });

    }
 

ulr!ch

Bekanntes Mitglied
spoensche, sisko78 - hey, ihr seit halt doch die Besten!
Jetzt funktioniert alles so, wie es sein soll. :)
Nachdem ich noch
Code:
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
gesetzt hatte, ist er auch nicht rausgeflogen, wenn ich dann >Nein< gedrückt habe.
Danke noch einmal ihr beiden.

Ciao, Ulrich
 

ulr!ch

Bekanntes Mitglied
L-ectron-X hat gesagt.:
Das Thema kam nicht zum ersten Mal. Bitte auch mal die Suchfunktion benutzen!
Bevor ich post, suche ich zuerst immer im Forum nach Einträgen und google natürlich auch.
Aber für "JFrame JOption", "frame JOption" habe ich nichts gefunden.
Hätte ich gewusst, worauf es hinausläuft, hätte ich den Eintrag finden können. Aber der hätte mir in meinem Fall ehrlich gesagt auch nicht weitergeholfen. :(
Ich verstehe ja deine Bedenken L-ectron-X, aber hier scheint sie mir ein wenig fehl am Platz.

By<e Ulrich
 

ulr!ch

Bekanntes Mitglied
OK, den habe ich nicht gefunden... :?
und dieser Artikel hätte mir tatsächlich auch die Lösung für mein Problem, nämlich null statt this gebracht...

Thx & by<e Ulrich
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tobero JFrame nimmt keinen Key oder Maus inputs Allgemeine Java-Themen 0
FRI3ND JFrame wird nicht angezeigt Allgemeine Java-Themen 3
N JFrame für Minispiele Allgemeine Java-Themen 14
F JFrame fü Eclipse wie? Allgemeine Java-Themen 6
4 Swing JFrame BackgroundColor Allgemeine Java-Themen 3
RalleYTN Merkwürdiger Fehler mit JFrame im Vollbild Allgemeine Java-Themen 4
snipesss Visueller Countdown in JFrame Allgemeine Java-Themen 1
K Swing OpenStreetMap in JFrame einfügen Allgemeine Java-Themen 1
K Best Practice JFrame Objekt allgemein zugänglich machen Allgemeine Java-Themen 8
S JFrame Variable mitgeben Allgemeine Java-Themen 5
F JFrame übergeben Allgemeine Java-Themen 5
B JFrame Text Ausgabe Allgemeine Java-Themen 7
T JFrame Overlay Allgemeine Java-Themen 1
I JPanel soll sich dem JFrame anpassen Allgemeine Java-Themen 1
I JFrame vor schliessen, methode auführen Allgemeine Java-Themen 2
I JFrame Icon in Main übergeben Allgemeine Java-Themen 1
? AWT Translucent JFrame mit repaint Allgemeine Java-Themen 4
S OOP JFrame als Observer eines JPanel Allgemeine Java-Themen 3
X Modalität von JDialog nachträglich in JFrame implementieren? Allgemeine Java-Themen 8
P Ableitungsfehler JFrame Allgemeine Java-Themen 5
A Excel Tabelle in JFrame darstellen Allgemeine Java-Themen 6
S JFrame an Fenstergröße anpassen Allgemeine Java-Themen 16
G JPanel in JFrame Allgemeine Java-Themen 9
S JDialog Daten ins JFrame übergeben Allgemeine Java-Themen 5
E Grafiken auf dem JFrame Allgemeine Java-Themen 5
D Bilder in JFrame anzeigen Allgemeine Java-Themen 5
X Kann JLabel in JFrame nicht aktualisieren Allgemeine Java-Themen 3
J pack() lässt JFrame grau Allgemeine Java-Themen 3
J JFrame / PopUp-Menü bearbeiten Allgemeine Java-Themen 2
M JFrame absolut im Vordergrund Allgemeine Java-Themen 2
D JFrame nur in eine Richtung resizen Allgemeine Java-Themen 6
X JFrame sichtbar bei einem gesperrten Computer Allgemeine Java-Themen 11
U Zeichnen mit JFrame. Allgemeine Java-Themen 5
P JPanel - JFrame Allgemeine Java-Themen 6
N JFrame Icon selbst erzeugen Allgemeine Java-Themen 2
T applet und JFrame Allgemeine Java-Themen 12
T abspeichern und laden von objekten in JFrame Allgemeine Java-Themen 2
Developer_X JFrame verkleinern Allgemeine Java-Themen 20
D Problem mit Tooltips und JFrame (Tooltips sind zu kurz!) Allgemeine Java-Themen 4
Z Uralt-Applet in JFrame Anwendung konvertieren Allgemeine Java-Themen 12
F JFrame zeigt Hintergrund und nicht den Inhalt Allgemeine Java-Themen 12
G Bilder einer Webcam im JFrame anzeigen Allgemeine Java-Themen 5
D Von Thread auf JFrame zugreiffen? Allgemeine Java-Themen 5
M JFrame anpassen Allgemeine Java-Themen 4
M Neues JPanel in JFrame einbinden Allgemeine Java-Themen 6
W Das schließen des JFrame abfangen, wiei? Allgemeine Java-Themen 6
M PDF auf JFrame Allgemeine Java-Themen 10
D JFrame vergrößert nicht auf die gewünschte Größe Allgemeine Java-Themen 2
MQue JFrame nur einmal öffnen Allgemeine Java-Themen 3
MQue Fokus von Komponenten/JFrame Allgemeine Java-Themen 3
MQue JFrame bleibt hängen Allgemeine Java-Themen 3
P Image auf JPanel auf JFrame Allgemeine Java-Themen 3
P JPanel in JFrame Allgemeine Java-Themen 2
T Sound in JFrame: Ich krichs nich hin =( Allgemeine Java-Themen 7
E 2 Images auf einem JFrame Allgemeine Java-Themen 8
TheJavaKid Component in der Titelleiste vom JFrame? Allgemeine Java-Themen 18
G Word-Dokument in einem JFrame Allgemeine Java-Themen 2
T Servlet und JFrame Allgemeine Java-Themen 2
S JFrame mit Wartezeit Allgemeine Java-Themen 12
thE_29 Java App/JFrame Bildschirm "sperren" Allgemeine Java-Themen 10
T JFrame in Statusleiste minimieren Allgemeine Java-Themen 4
D JFrame nicht per Hand schreiben Allgemeine Java-Themen 5
G wie Klasse in JFrame "einfügen" Allgemeine Java-Themen 12
G JFrame nimmt mein Image nicht Allgemeine Java-Themen 2
S visible prob mit JFrame und JDialog Allgemeine Java-Themen 4
A JFrame-Liste Allgemeine Java-Themen 4
J JFrame Problem beim schließen Allgemeine Java-Themen 2
R java.awt.Component.setCursor() fehlt bei der JFrame doc Allgemeine Java-Themen 2
J JOptionPane - Leereingabe, Wiederholen Allgemeine Java-Themen 10
G JProgressBar in JOptionpane? Allgemeine Java-Themen 16
Aruetiise Swing JOptionPane ohne denn Thread zu pausieren Allgemeine Java-Themen 1
I CountDown wird durch JOptionPane unterbrochen Allgemeine Java-Themen 11
M Hilfe mit JOptionPane Allgemeine Java-Themen 2
M "JOptionPane.showMessageDialog" funktioniert nicht in jar-Archive. Allgemeine Java-Themen 4
D JOptionPane nur 1 Input möglich? Allgemeine Java-Themen 6
T JOptionPane.showMessageDialog() bleibt hängen Allgemeine Java-Themen 5
D Frage zu JOptionPane Allgemeine Java-Themen 2
T IF Abfrage + YES_NO Option mittels JOptionPane Allgemeine Java-Themen 3
G joptionpane problem Allgemeine Java-Themen 8
clemente Code OK? - JOptionPane ruiniert KDE Sitzung Allgemeine Java-Themen 5
G Mouselistener geht aber danach Fehler bei JOptionPane Allgemeine Java-Themen 4
U html in JOptionPane - wie? Allgemeine Java-Themen 5
C JOptionPane, Parentframe übergeben wie? Allgemeine Java-Themen 5
P PooledConnection früher schließen oder abarbeitung queuen? wie vorgehen Allgemeine Java-Themen 7
C anderes Programm schließen! Allgemeine Java-Themen 5
MaxG. Swing Frame schließen Allgemeine Java-Themen 9
T Fenster schließen verhindern Allgemeine Java-Themen 13
Tausendsassa Threads Einen Thread sich selbst schließen lassen Allgemeine Java-Themen 17
Tausendsassa Interface Eine Gui von einer anderen schließen lassen Allgemeine Java-Themen 3
F Fenster schließen bei Klick auf Kreuz Allgemeine Java-Themen 14
A Applet Alle Threads beim schließen des Applets beenden Allgemeine Java-Themen 8
T Methode beim Schließen der xhtml Seite? Allgemeine Java-Themen 4
D Dialog soll sich beim Klick auf Button schließen Allgemeine Java-Themen 8
E externen Prozess schließen, wenn Programm geschlossen wird Allgemeine Java-Themen 2
Landei DDE-Probleme und Programm schließen Allgemeine Java-Themen 2
B Algorythmus Lücke in Sequenz schließen Allgemeine Java-Themen 7
B Applet Destruktor beim Browser schließen? Allgemeine Java-Themen 5
B Öffnen und schließen von Pdf-Files Allgemeine Java-Themen 8
nrg Java Observer in SysTray laufen lassen / Console schließen Allgemeine Java-Themen 2
A HTML-Seite wieder schließen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben