2010-12-14 13 views
2

hallo ich habe ein Vollbild-Programm, das ich die Leute nicht will, zu schließen, wenn sie nicht ein Passwort haben, ich habe diesen Code im MomentJava Stop Menschen schließen

public void windowClosing(WindowEvent arg0) 
{ 
    System.out.println("HERE"); 
    String inputValue = JOptionPane.showInputDialog("Please input the closeword"); 

    if (inputValue != "closeplz") 
    { 

    } 
} 

in der if-Anweisung ich will es stoppen die Methode, so dass das Programm im Allgemeinen schließen. jede Hilfe sehr ste aprecheated dank

+2

Was STRG + ALT + ENTF oder STRG + SHIFT + ESC auf Windows? – thejh

+5

das Beenden des laufenden Java-Prozesses wird kein Passwort anfordern. –

+2

Was versuchst du zu tun? Es gibt wahrscheinlich einen besseren Weg. – thejh

Antwort

7

Sie rufen müssen

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 

auf (oder in) der JFrame Instanz würde. Dann wird der Rahmen nicht geschlossen, es sei denn Sie tun es manuell, obwohl windowClosing() immer noch angerufen wird. Darin können Sie dann unter der Nummer

anrufen, wodurch die Anwendung beendet wird. Stellen Sie sicher, dass Sie die erforderliche Bereinigung zuerst durchführen.

+1

Gibt Returncode 1 keinen Fehler an und Sie sollten 0 verwenden? – thejh

+0

@thejh: wahr, das ist die allgemeine Konvention. Aber GUI-Apps haben selten (wenn überhaupt) ihren Rückgabecode trotzdem überprüft. –

1

Check out Closing an Applicaton für eine einfache Klasse, um Ihnen dabei zu helfen. Sie müssen die benutzerdefinierte Schließaktion angeben, die den Benutzer zur Eingabe des Kennworts auffordert.

Arbeiten mit dem einfachen Beispiel der Code wäre:

Action ca = new AbstractAction() 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
     JFrame frame = (JFrame)e.getSource(); 

     String inputValue = JOptionPane.showInputDialog("Please input the closeword"); 


     if (! inputValue.equals("closeplz")) 
     { 
      frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
     } 
    } 
}; 

CloseListener cl = new CloseListener(ca);