Netbeans-Anwendung schliessen

Status
Nicht offen für weitere Antworten.

heidiweber

Aktives Mitglied
Hallo,

ich habe mit Netbeans 6.1 eine Standard-MDI-Anwendung erstellen lassen.

Das Projekt besteht u.a. aus.
FrameView
JPanel
JMenuBar
statusBar

Ich möchte die Möglichkeit haben, wenn man die Anwendung schliesst (z.B. durch klick auf das X rechts oben), zuerst zu fragen, ob noch die geänderten Daten gespeichert werden sollen. Oder evtl. dass man das schliessen sogar verhindern kann.

Bei einem JDialog habe ich ja ein Windowsclosing bzw. WindowsClosed -> da ist es kein Problem. Aber bei der "Haupt-MDI"-Anwendung nicht.

Wie kann man sowas realisieren?

Vielen Dank für die Hilfe
Heidi
 

André Uhres

Top Contributor
Das entsprechende Window Event können wir auch an den JFrame hängen.
Die DefaultCloseOperation setzen wir dann auf DO_NOTHING_ON_CLOSE.
 

heidiweber

Aktives Mitglied
Ich habe aber leider kein JFrame.

In Netbeans kann ich leider nirgends in den Properties (in der Mitte auf der rechten Seite) zu den entsprechenden Containern (siehe erste Posting) diesbzgl. was einstellen. Bei einem JFrame geht das. Aber nicht bei der Konstellation, die Netbeans standardmäßig anlegt - oder?
 

André Uhres

Top Contributor
Versuch Folgendes: such im Quellcode nach "initComponents();".
Dort fügst du dies ein:
Code:
       initComponents();
        getFrame().setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getFrame().addWindowListener(new java.awt.event.WindowAdapter() {
            @Override
            public void windowClosing(java.awt.event.WindowEvent evt) {
                System.out.println("windowClosing");
            }
        });
 

heidiweber

Aktives Mitglied
Guten Morgen,

das schaut doch schon mal nicht schlecht aus:)

Ich habe das bis jetzt so:

Code:
        getFrame().setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
        getFrame().addWindowListener(new java.awt.event.WindowAdapter() { 
            @Override 
            public void windowClosing(java.awt.event.WindowEvent evt) { 
                System.out.println("windowClosing"); 
                int res = JOptionPane.showConfirmDialog(null, "Möchten sie die geänderten Werte Speichern?", "Speichern?", JOptionPane.YES_NO_CANCEL_OPTION);

                if (res == 0) {
                    // YES gedrueckt
                } else if (res == 1) {
                    // NO gedrueckt
                } else {
                    // Cancel gedrueckt
                    
                    // Was muss hier rein, damit das Formular nicht geschlossen wird?
                }

            } 
        });

Wie kann ich noch verhindern, dass das Formular geschlossen wird, wenn der User auf Abbrechen klickt?

Dachte erst, dass ich die DefaultCloseOperation auf DO_NOTHING_ON_CLOSE setzte und dann händisch das Formualr schliesse. Jedoch hat dies keinen Einfluss, das Formular wird trotzdem geschlossen:

Code:
getFrame().setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);

Kannst du mir bitte noch einen Tipp geben?
Wünsch dir einen schönen Sonntag:)
Grüße
Heidi
 

André Uhres

Top Contributor
So müsste es gehen:
Code:
public class DesktopApplication3View extends FrameView {
...
//Du musst natürlich "desktopapplication3.DesktopApplication3" und "DesktopApplication3View" 
//durch deine Package/Klassen-Namen ersetzen:
        javax.swing.ActionMap actionMap = org.jdesktop.application.Application
                .getInstance(desktopapplication3.DesktopApplication3.class)
                .getContext().getActionMap(DesktopApplication3View.class, this);
        actionMap.put("quit", new AbstractAction("Exit") {
            public void actionPerformed(ActionEvent e) {
                quit();
            }
        });
        initComponents();
        initWindowListener();
Code:
   private void quit() {
        int res = JOptionPane.showConfirmDialog(null, "Möchten sie die geänderten " +
                "Werte Speichern?", "Speichern?", JOptionPane.YES_NO_CANCEL_OPTION);
        if (res == 0) {
            // YES gedrueckt
            getFrame().dispose();
        } else if (res == 1) {
            // NO gedrueckt
            getFrame().dispose();
        } else {
            // Cancel gedrueckt
        }
    }
    private void initWindowListener() {
        Runnable init = new Runnable() {
            public void run() {
                //Die WindowListener vom "Swing Application Framework" ausschalten:
                WindowListener[] windowListeners = getFrame().getWindowListeners();                
                for (WindowListener windowListener : windowListeners) {
                    getFrame().removeWindowListener(windowListener);
                }
                //Eigenen WindowListener hinzufügen:
                getFrame().setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
                getFrame().addWindowListener(new java.awt.event.WindowAdapter() {
                    @Override
                    public void windowClosing(java.awt.event.WindowEvent evt) {
                        quit();
                    }
                });
            }
        };
        SwingUtilities.invokeLater(init);
    }
Ich kenne das "Swing Application Framework" nicht so gut und weiss daher nicht, ob es vielleicht eine elegantere Lösung gibt :wink:
 

heidiweber

Aktives Mitglied
Vielen Dank André für die spitzen Hilfe. Ich habe es hinbekommen:)

Aber ich habe noch eine Frage:

Ich habe nur die Methoden "quit" und "initWindowListener" eingebaut - und rufe die dann einfach so auf:

Code:
initComponents(); 
initWindowListener();

Funktioniert.

Für was ist dann dies:

Code:
        javax.swing.ActionMap actionMap = org.jdesktop.application.Application 
                .getInstance(desktopapplication3.DesktopApplication3.class) 
                .getContext().getActionMap(DesktopApplication3View.class, this); 
        actionMap.put("quit", new AbstractAction("Exit") { 
            public void actionPerformed(ActionEvent e) { 
                quit(); 
            } 
        });

Kannst du oder sonst jemand mir bitte das noch erklären? Ich wills ja auch zumindest einigermassen verstehen, was ich mache.

Ich habe zwar schon gegoogelt:

Eine ActionMap beinhaltet die Verknüpfung von Schlüsseln bzw. Action-Namen zu Action-Exemplaren. Typischerweise wird diese Klasse mit einer InputMap verwendet. Wenn eine Eltern-ActionMap angegeben wurde wird auch in der gesucht, wenn in der aktuellen der Wert nicht gefunden werden konnte.

Aber was heisst das auf Deutsch? Und brauche ich das actionMapping, wenns auch ohne geht?

Grüße
Heidi
 

André Uhres

Top Contributor
heidiweber hat gesagt.:
brauche ich das actionMapping, wenns auch ohne geht?
Natürlich nicht. Die Menubar vom Framework benutzt aber Actions. Falls du das Programm auf diesem Weg beenden willst,
dann brauchst du wahrscheinlich den angegebenen Code.
(Sry für die verspätete Antwort, war in Urlaub.)
 

heidiweber

Aktives Mitglied
Alles klar (Das Handling der Menübar macht Netbeans für mich - rufe beim Beenden-Button einfach Quit() auf).

Vielen Dank nochmal für die Hilfe. Du hast mir super weitergeholfen.

Schönen Abend noch

Grüße
Heidi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
Juelin JavaFX Netbeans Aufruf Funktion aus Scenebuilder AWT, Swing, JavaFX & SWT 8
MiMa Netbeans Projektdatum herausfinden? AWT, Swing, JavaFX & SWT 3
Georges456 NetBeans am Mac leider ohne FXML AWT, Swing, JavaFX & SWT 17
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
F Gebundene Eigenschaften bei Komponenten mit NetBeans verarbeiten AWT, Swing, JavaFX & SWT 3
K Buttons dynamisch erstellen (NetBeans) AWT, Swing, JavaFX & SWT 10
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
JR2205 Swing JxMaps Einbindung Netbeans JFrame AWT, Swing, JavaFX & SWT 4
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
V Netbeans: TabbedPane, ScrollPane und Graphics AWT, Swing, JavaFX & SWT 4
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
A Flug Drone steuern "DronePosition" NetBeans AWT, Swing, JavaFX & SWT 4
D SteelSeries in Netbeans als Drag-and-Drop einbinden AWT, Swing, JavaFX & SWT 0
M NetBeans Swing GUI Builder AWT, Swing, JavaFX & SWT 2
E Mit Netbeans von einer Form auf eine Komponente einer anderen Form zugreifen AWT, Swing, JavaFX & SWT 2
Helgon Swing Mit Swing zeichnen / NetBeans GUI AWT, Swing, JavaFX & SWT 11
B Swing Filter für JTable mit Netbeans Editor AWT, Swing, JavaFX & SWT 2
S NetBeans GUI Builder - Code-Platzierung AWT, Swing, JavaFX & SWT 3
E Netbeans: Buttons mit Label bzw. Rahmen unterlegen AWT, Swing, JavaFX & SWT 8
N Swing Netbeans 7.1 keine DesktopApplication mehr möglich ? AWT, Swing, JavaFX & SWT 15
L Swing Fenstergröße setzen (Netbeans) AWT, Swing, JavaFX & SWT 6
T jpanel höhe netbeans.... AWT, Swing, JavaFX & SWT 5
B Netbeans Swing/AWT Editor editierbar? AWT, Swing, JavaFX & SWT 5
B Look And Feel ändern (Netbeans) AWT, Swing, JavaFX & SWT 18
T JButtons indexiert unter NetBeans anlegen AWT, Swing, JavaFX & SWT 7
I jList und Netbeans AWT, Swing, JavaFX & SWT 4
G GUI Elemente aus NetBeans verwenden AWT, Swing, JavaFX & SWT 8
Binary.Coder Netbeans GUI zu Eclipse (schon gegooglet und einiges ausprobiert). AWT, Swing, JavaFX & SWT 4
F Netbeans Gui in BlueJ Projekt AWT, Swing, JavaFX & SWT 9
D Netbeans GUI-Builder Darstellungsprobleme AWT, Swing, JavaFX & SWT 2
R jFreeChart in eine NetBeans Projekt integrieren AWT, Swing, JavaFX & SWT 24
S auf einem mit Netbeans (GUI) erstellten JPanel (eines JFrames) zeichnen? AWT, Swing, JavaFX & SWT 7
S Java3D in ein JPanel integrieren mit Netbeans 6.8 AWT, Swing, JavaFX & SWT 4
V [SUCHE]GUI Programmier Tutorial[Netbeans] AWT, Swing, JavaFX & SWT 8
U Netbeans GUI nach Eclipse AWT, Swing, JavaFX & SWT 7
S GUI von Sourcecode in Netbeans AWT, Swing, JavaFX & SWT 3
S NetBeans && multiple Fensteroeffnung AWT, Swing, JavaFX & SWT 3
R AWT [Anfänger] Radio Buttons NetBeans 6.7.1 AWT, Swing, JavaFX & SWT 2
H Swing Netbeans Panel einbinden AWT, Swing, JavaFX & SWT 5
C NetBeans Gui-Inhalt ändern AWT, Swing, JavaFX & SWT 4
A NetBeans und ComboBox AWT, Swing, JavaFX & SWT 2
H Netbeans und JavaDB AWT, Swing, JavaFX & SWT 11
E Hat Netbeans unter Linux kein Designer für Swing? AWT, Swing, JavaFX & SWT 3
L Animierter Splash-Screen (mit NetBeans 6.1 z.B.) AWT, Swing, JavaFX & SWT 2
O Bindings, dynamische Verbindung (Vorbau mit Netbeans) AWT, Swing, JavaFX & SWT 10
G paintComponent() Methode für JPanel in NetBeans überschreibe AWT, Swing, JavaFX & SWT 2
D Problem mit Netbeans und repaint() AWT, Swing, JavaFX & SWT 5
J Auslösung von Aktionen über Tastatur (Netbeans) AWT, Swing, JavaFX & SWT 23
K Netbeans GUI Builder (Matisse) und erstellen von JPopupMenu AWT, Swing, JavaFX & SWT 1
W netbeans projekt in Eclipse importieren -gui teil geht nicht AWT, Swing, JavaFX & SWT 5
loadbrain Icon für JFrame mit Netbeans AWT, Swing, JavaFX & SWT 3
L JTable nach Buttonklick auslesen [NetBeans] AWT, Swing, JavaFX & SWT 4
L NetBeans will ne Klammer ich weiß aber nicht wohin AWT, Swing, JavaFX & SWT 7
M Button und Exception mit NetBeans AWT, Swing, JavaFX & SWT 3
M Einstellung des Projekt-Verzeichnis in NetBeans AWT, Swing, JavaFX & SWT 4
P Fehler beim Verwenden von swt.jar mit NetBeans AWT, Swing, JavaFX & SWT 2
R NetBeans - JFrame und JPanel AWT, Swing, JavaFX & SWT 3
H AbsoluteLayout nicht nur unter Netbeans AWT, Swing, JavaFX & SWT 5
A Applikation mit Netbeans-Design AWT, Swing, JavaFX & SWT 4
F Swing mit NetBeans AWT, Swing, JavaFX & SWT 6
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
P Swing Anwendung von LayeredPanel AWT, Swing, JavaFX & SWT 6
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
N JavaFX Vor beenden der Anwendung durch klicken von X Dialog zeigen AWT, Swing, JavaFX & SWT 1
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
B JavaFX Wie A4-Seite in meiner Anwendung repräsentieren AWT, Swing, JavaFX & SWT 6
B JavaFX JavaFX Anwendung deployen (entw als runnableJAR oder exe-Datei) AWT, Swing, JavaFX & SWT 15
OSchriever Anwendung aus SystemTray öffnen AWT, Swing, JavaFX & SWT 29
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
T Anwendung mit X schliessen AWT, Swing, JavaFX & SWT 1
L JavaFX OpenJFX13 Anwendung exportieren AWT, Swing, JavaFX & SWT 7
D PDF Viewer in SWT-Anwendung AWT, Swing, JavaFX & SWT 8
O Basics - Anwendung erstellen mit mehreren Szenen AWT, Swing, JavaFX & SWT 1
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
A JavaFX Anwendung in Jar Datei AWT, Swing, JavaFX & SWT 8
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
J Splashscreen Start Anwendung AWT, Swing, JavaFX & SWT 14
MiMa Programmeinstellungen für Anwendung?? AWT, Swing, JavaFX & SWT 54
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
I JFileChooser mit System L&F bei anderem L&F der eigtl. Anwendung AWT, Swing, JavaFX & SWT 0
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
L JavaFX PdfViewer für JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
D JafaFX Anwendung beenden AWT, Swing, JavaFX & SWT 11
B Wie erstelle ich eine JavaFX Anwendung von diesem Code? AWT, Swing, JavaFX & SWT 3
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
X Anwendung skalierbar AWT, Swing, JavaFX & SWT 3
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4
D JavaFX Anwendung hängt sich permanent auf AWT, Swing, JavaFX & SWT 6
L JavaFX Java FX Anwendung nach MVC mit Observer Pattern AWT, Swing, JavaFX & SWT 15
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
I Variabeln speichern in Desktop Anwendung AWT, Swing, JavaFX & SWT 2
V Anwendung im Vollbild zentrieren AWT, Swing, JavaFX & SWT 13
A Swing Textübergabe innerhalb der Anwendung in unterschiedlichen Fenster AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben