2012-03-31 6 views
0

Ich erstelle einen einfachen Bildschirmschoner für ein kleines Projekt für die Hochschule und ich habe Probleme, den JFrame zu schließen, nachdem ich es geöffnet habe. Ich habe das äußere Panel entfernt, damit es ein richtiger Bildschirmschoner wird, aber ich muss jetzt den Task-Manager öffnen, um das Programm zu schließen. Ich möchte, dass das Fenster geschlossen wird, wenn ich eine Taste auf der Tastatur drücke. Wie kann ich das tun? Vielen Dank im Voraus.Schließen eines JFrame mit der Tastatur

------- -------- EDIT

Ich habe die ersten beiden Methoden gegeben versucht, aber ich kann nicht scheinen, um sie richtig zu arbeiten. Hier ist mein Code für den Rahmen so weit:

import java.awt.Color;  
import javax.swing.JFrame;  
public class ScreensaverTest 

{  
public static void main(String[] args)  
{   
    JFrame frame = new JFrame("Screen Saver"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setUndecorated(true); 
    ScreenSaverJPanel screensaverTestJPanel = new ScreenSaverJPanel(); 
    frame.add(screensaverTestJPanel); 
    frame.setBackground(Color.BLACK); 
    frame.setVisible(true); 
    frame.setLocation(0, 0); 
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
    }  
} 

-------- --------- EDIT

Auch ich die Repaint-Methode verwenden Objekte zu bewegen, der Bildschirm und ich möchte, dass einige von ihnen sich mit unterschiedlicher Geschwindigkeit bewegen. Ich benutze einen Zufallszahlengenerator für die Positionierung, so dass die Anpassung der Zahlen nicht wirklich eine Option ist, bitte helfen.

+0

Erstellen Sie einfach einen KeyListener und schließen Sie das Programm, wenn dieses Ereignis auftritt. – dexametason

Antwort

2

Es gibt viele Beispiele dafür.

Sie müssen einen EventListener zu dem Frame hinzufügen, der auf Tastatureingaben wartet und dann den Frame schließt. Versuchen Sie diese Suche: http://www.java2s.com/Code/Java/Swing-JFC/Reacttoframecloseaction.htm

Sie das Ereignis mit etwas keyboard-related, aber das ist der beste Weg zu gehen .. Ich würde denken,

bearbeiten müssen ersetzt werden: zum Bearbeiten

reagieren in der post könnte man so etwas tun:

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

public class Test { 

    public Test() { 
     final JFrame frame = new JFrame("Screen Saver"); 
     frame.validate(); 
     frame.setVisible(true); 

     KeyAdapter listener = new KeyAdapter() { 
      @Override public void keyPressed(KeyEvent e) { 
       frame.dispose(); 
      } 
     }; 

     frame.addKeyListener(listener); 
    } 

    public static void main(String[] args) { 
     new Test(); 
    } 

} 

Und voila - das sollte funktionieren. Es kompiliert für mich auf Java 7.

+0

Danke für die Hilfe bisher, aber wenn ich den Code eingegeben und die Importe hinzufügen und EventListener implementieren, bekomme ich immer noch einen Fehler in der letzten Zeile des Codes bei addEventListener sagen '' kann Symbol nicht finden '' und ich kann nicht herausfinden Was ist falsch, bitte helfen. – user1305374

+0

Hmm .. Ja, in Ordnung. Mein Code hatte viele Fehler. Das tut mir leid! Ich werde mit einem funktionierenden Beispiel aktualisieren. –

+0

Vielen Dank !! – user1305374

1

Hier ist der Code, wenn Sie nur einen einzigen JFrame haben. Sie sollten es hinzufügen, wenn Sie Ihre Komponenten initialisieren.

addKeyListener(new KeyAdapter() 
    { 
     @Override 
     public void keyPressed(java.awt.event.KeyEvent evt) 
     { 
      processWindowEvent(new WindowEvent(getWindows()[0], WindowEvent.WINDOW_CLOSING)); 
     } 
    }); 
Verwandte Themen