JFrame wird unsichtbar

Status
Nicht offen für weitere Antworten.

Felix

Bekanntes Mitglied
Hallo zusammen,

ich möchte den Benutzer meines Programms (falls er das Projekt noch nicht gespeichert hat) beim Beenden fragen, ob das Projekt speichern will. Dieser "Ja-Nein-Abbrechen"-Dialog ist ja von vielen Programmen bekannt. Ja und Nein sorgen für das Speichern bzw. dafür, dass es nicht gespeichert wird, und daraufhin das Programm beendet wird, und abbrechen sollte dafür sorgen, dass nichts passiert. Tut es aber nicht... Statt dessen wird das JFrame (Hauptfenster des Programms) unsichtbar, das Programm aber nicht beendend. Ich hab mal den Code gepostet:

Code:
	/*
	 * Anwendung schließen
	 */
	public void close() {

		//...

		if (this.save() == false) { //tritt ein, wenn das Projekt noch nicht gespeichert ist
			if (this.askForSaving()) { //weiter unten...
				//einige Einstellungen speichern...

				System.exit(0);
		  	}
		}
	}

	private boolean askForSaving() {
		if (vocablesystem.getBox1().size() + vocablesystem.getBox2().size()
				+ vocablesystem.getBox3().size()
				+ vocablesystem.getBox4().size()
				+ vocablesystem.getBox5().size() != 0) { //wenn das Projekt nicht leer ist
			JOptionPane pane = new JOptionPane(
					"Das derzeit geöffnete Projekt wurde nicht gespeichert. Jetzt speichern?",
					JOptionPane.QUESTION_MESSAGE,
					JOptionPane.YES_NO_CANCEL_OPTION);
			int selectedOption = pane
					.showConfirmDialog(this,
							"Das derzeit geöffnete Projekt wurde nicht gespeichert. Jetzt speichern?");

			if (selectedOption == JOptionPane.NO_OPTION) { //nein wurde gewählt -> Programm beenden
				return true;
			} else if (selectedOption == JOptionPane.YES_OPTION) { //ja wurde gewählt -> Programm beenden
				this.setPath(); //speichern-Dialog
				if (this.save() == false) { //falls speichern nicht funktioniert erneut speichern-Dialog
					return this.askForSaving();
				} else {
					return true;
				}
			} else { //abbrechen wurde gewählt -> Programm nicht beenden
				return false;
			}
		} else {
			return true;
		}
	}

Ich habe den Code so kurz wie möglich gehalten.
Ich hoffe euch kommt eine Idee, denn ich beiß mir schon seit längerem die Zähne an dem Problem aus.
Gruß
der Felix
 

André Uhres

Top Contributor
Hast du diesen Aufruf drin:
Code:
        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

So funktioniert es bei mir:

Code:
package basics;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class NewJFrame extends JFrame {

    private Vocablesystem vocablesystem = new Vocablesystem();
    private boolean isSaved;

    public NewJFrame() {
        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(final WindowEvent evt) {
                close();
            }
        });
        setSize(400, 300);
    }
    /*
     * Anwendung schließen
     */

    public void close() {
        if (this.save() == false) { //tritt ein, wenn das Projekt noch nicht gespeichert ist
            if (this.askForSaving()) { //weiter unten...
                //einige Einstellungen speichern...

                System.exit(0);
            }
        }
    }

    private boolean askForSaving() {
        if (vocablesystem.getBox1().size() + vocablesystem.getBox2().size() + vocablesystem.getBox3().size() + vocablesystem.getBox4().size() + vocablesystem.getBox5().size() != 0) { //wenn das Projekt nicht leer ist
            JOptionPane pane = new JOptionPane(
                    "Das derzeit geöffnete Projekt wurde nicht gespeichert. Jetzt speichern?",
                    JOptionPane.QUESTION_MESSAGE,
                    JOptionPane.YES_NO_CANCEL_OPTION);
            int selectedOption = JOptionPane.showConfirmDialog(this,
                    "Das derzeit geöffnete Projekt wurde nicht gespeichert. Jetzt speichern?");

            if (selectedOption == JOptionPane.NO_OPTION) { //nein wurde gewählt -> Programm beenden
                return true;
            } else if (selectedOption == JOptionPane.YES_OPTION) { //ja wurde gewählt -> Programm beenden
                this.setPath(); //speichern-Dialog
                if (this.save() == false) { //falls speichern nicht funktioniert erneut speichern-Dialog
                    return this.askForSaving();
                } else {
                    return true;
                }
            } else { //abbrechen wurde gewählt -> Programm nicht beenden
                return false;
            }
        } else {
            return true;
        }
    }

    public static void main(final String args[]) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    private boolean save() {
        return isSaved;
    }

    private void setPath() {
        System.out.println("setPath");
        isSaved = true;
    }
}

class Vocablesystem {

    VBox getBox1() {
        return new VBox("1");
    }

    VBox getBox2() {
        return new VBox("22");
    }

    VBox getBox3() {
        return new VBox("333");
    }

    VBox getBox4() {
        return new VBox("4444");
    }

    VBox getBox5() {
        return new VBox("55555");
    }
}

class VBox {

    private String str;

    VBox(String string) {
        str = string;
    }

    public int size() {
        return str.length();
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
I JFrame minimieren wenn anderes Programm minimiert wird Java Basics - Anfänger-Themen 1
K Methoden Methode starten wenn JFrame geöffnet wird Java Basics - Anfänger-Themen 2
S Wieso wird mein JFrame transparent dargestellt? Java Basics - Anfänger-Themen 5
Z Zwei Images auf einem JFrame - Aber nur eins wird angezeigt! Java Basics - Anfänger-Themen 5
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
S Interface JButton etc. wird in JFrame mit paint() nicht angezeigt Java Basics - Anfänger-Themen 6
S JFrame wird nicht "bemalt" Java Basics - Anfänger-Themen 2
B Drawline wird auf JFrame nicht angezeigt Java Basics - Anfänger-Themen 3
M Bild in JFrame wird nicht angezeigt Java Basics - Anfänger-Themen 6
O JToolBar wird Tab in JTabbedPane statt Toolbar in JFrame Java Basics - Anfänger-Themen 6
fragenÜber(fragen); Turtle Grafik mit GUI (JFrame) Java Basics - Anfänger-Themen 3
E JFrame + Buffer-strategy Java Basics - Anfänger-Themen 8
I JFrame / Screen auf zweitem (definiertem) Monitor öffnen Java Basics - Anfänger-Themen 3
luggas89 Mit Jframe live zeichnen Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
B HSQL mit JFrame steuern Java Basics - Anfänger-Themen 4
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
D Erste Schritte png in JFrame anzeigen? Java Basics - Anfänger-Themen 3
Thomathy Interface Wie schließt man ein anderes JFrame Fenster? Java Basics - Anfänger-Themen 6
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
S Kontrollieren ob jframe disposed ist Java Basics - Anfänger-Themen 3
Elyt JFrame in den Hintergrund verschieben Java Basics - Anfänger-Themen 3
OSchriever JFrame-Anwendungsfenster verschieben Java Basics - Anfänger-Themen 17
M Bild in JFrame Java Basics - Anfänger-Themen 1
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S JFrame mit Hintergrundbild und Button Java Basics - Anfänger-Themen 4
S JFrame Java Basics - Anfänger-Themen 15
I JFrame proportional verkleinerbar machen Java Basics - Anfänger-Themen 3
B Java JFrame zeichnen Java Basics - Anfänger-Themen 4
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
T Auslagern von Methoden bei einem JFrame Java Basics - Anfänger-Themen 6
N Erste Schritte JFrame Caesar-Verschlüsselung Java Basics - Anfänger-Themen 23
B Erste Schritte Objekte von JFrame der Fenstergröße anpassen Java Basics - Anfänger-Themen 3
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
3 JFrame immer im Hintergrund Java Basics - Anfänger-Themen 1
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R JFrame nicht verschiebbar Java Basics - Anfänger-Themen 2
T Wenn JFrame Textfelder Hintergrund Grün dann... (if) Java Basics - Anfänger-Themen 3
K Java JFrame mit Hintergrundbild erstellen Java Basics - Anfänger-Themen 1
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
H Eclipse JFrame Java Basics - Anfänger-Themen 3
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
D Erste Schritte JFrame Inhalte werden nicht angezeigt Java Basics - Anfänger-Themen 8
A Variablen In anderer Klasse auf Objekte von JFrame zugreifen Java Basics - Anfänger-Themen 1
B Ist MyFrame oder JFrame besser? Java Basics - Anfänger-Themen 3
Y JFrame sichtbarkeit Java Basics - Anfänger-Themen 4
KeVoZ_ Label auf JFrame willkürlich Positionieren Java Basics - Anfänger-Themen 2
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
P JFrame nur einmal öffnen Java Basics - Anfänger-Themen 4
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
V Tastatur initialisieren JFrame Probleme Java Basics - Anfänger-Themen 6
J JPG in JFrame anzeigen lassen Java Basics - Anfänger-Themen 3
J JFrame ausgabe von Werten Java Basics - Anfänger-Themen 9
F GUI als Klasse oder extend JFrame? Java Basics - Anfänger-Themen 6
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
thomasbomme Grafikfehler JFrame- Cleartype Java Basics - Anfänger-Themen 1
GreyFox Arbeit mit JFrame Java Basics - Anfänger-Themen 8
T Erste Schritte 2 Codes zusammen fügen / Label in JFrame Java Basics - Anfänger-Themen 1
N Input/Output Wenn kein Input, dann Fehler anzeigen lassen im JFrame Java Basics - Anfänger-Themen 6
W 2 JPanels in 2Klasse in einem JFrame zusammenfügen Java Basics - Anfänger-Themen 12
dat_vin JFrame öffnet sich mehrmals Java Basics - Anfänger-Themen 6
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
M Rahmen für undekorierten JFrame Java Basics - Anfänger-Themen 6
B Erste Schritte JFrame in Klasse auslagern Java Basics - Anfänger-Themen 4
H JFrame komplett schließen Java Basics - Anfänger-Themen 3
S Brauche hilfe bei Pong (JFrame) Java Basics - Anfänger-Themen 2
M hintergrund in jframe festlegen Java Basics - Anfänger-Themen 4
J JFrame Render Fehler - Warum? Java Basics - Anfänger-Themen 2
I komponenten werden in JFrame nicht richtig angezeigt Java Basics - Anfänger-Themen 1
E 2. JFrame erkennt 1. Frame Java Basics - Anfänger-Themen 6
D Best Practice JFrame im JFrame Java Basics - Anfänger-Themen 2
P Bild in JFrame Titelleiste Java Basics - Anfänger-Themen 7
S Erste Schritte Von JFrame in nächstes JFRame wechseln Java Basics - Anfänger-Themen 0
V JFrame aktualisieren Java Basics - Anfänger-Themen 6
S JFrame ist nicht schwarz Java Basics - Anfänger-Themen 5
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
M Unsichtbare Objekte in JFrame Java Basics - Anfänger-Themen 2
S Textdatei einlesen und JFrame füllen Java Basics - Anfänger-Themen 14
Sogomn JLabel in anderer Klasse zum JFrame hinzufügen Java Basics - Anfänger-Themen 2
N Fokus setzen nachdem JFrame in Vordergrund geholt wurde Java Basics - Anfänger-Themen 7
K Methoden Objekt auf JFrame zeichnen Java Basics - Anfänger-Themen 16
S JFrame leeren Java Basics - Anfänger-Themen 6
X JFrame Fenster einzeln schließen Java Basics - Anfänger-Themen 2
J Klick auf Button -> JFrame öffnet sich erneut. & Datei lässt sich nicht löschen Java Basics - Anfänger-Themen 7
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
P JFrame Component automatische Größe verhindern Java Basics - Anfänger-Themen 2
D JFrame, Komponenten verschmiert. Java Basics - Anfänger-Themen 15
M Schriftfarbe in JFrame Java Basics - Anfänger-Themen 24
A JFrame läuft ewig? Java Basics - Anfänger-Themen 2
U JFrame durch ActionListener erweitern Java Basics - Anfänger-Themen 4
B Wie kann man auf das JFrame einer anderen Klasse zugreifen, etwas hinzufügen und entfernen?? Java Basics - Anfänger-Themen 3
N JFrame-Objekt in neuer Methode nicht verfügbar? Java Basics - Anfänger-Themen 3
A Frage zu: JFrame setLocationRelativeTo Java Basics - Anfänger-Themen 3
N Erste Schritte Prozessor Kernanzahl in JFrame Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben