2012-03-31 5 views
0

私は大学向けの小さなプロジェクト用の基本的なスクリーンセーバーを作成しています。私はそれを開いた後でJFrameを閉じるのに問題があります。私はそれが適切なスクリーンセーバーに見えるように外側のパネルを削除しましたが、私は今、プログラムを閉じるためにタスクマネージャを開く必要があります、私はどのように私はそれを行うことができますキーボードのボタンを押すと、ウィンドウを閉じたいですか? ありがとうございます。キーボードを使用してJFrameを閉じる

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

私は与えられた最初の2つの方法を試してみましたが、私は彼らが適切に動作するように見えることはできません。ここでは、フレームのための私のコードは、これまでのところです:

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 ---------私の周りのオブジェクトを移動するためにrepaintメソッドを使用しています。また

画面と私はそれらのいくつかが異なる速度で移動したい。私は乱数生成器を使用しているので、数値を調整することは実際にはオプションではありませんので、助けてください。

+0

このイベントが発生するたびに、KeyListenerを作成してプログラムを閉じるだけです。 – dexametason

答えて

2

これを行う方法には多くの例があります。

キーボード入力をリッスンしてからフレームを閉じるフレームにeventListenerを追加する必要があります。 この見て試してみてください。http://www.java2s.com/Code/Java/Swing-JFC/Reacttoframecloseaction.htm

あなたが何かkeyboard-relatedでイベントを交換する必要がありますが、それは私が思うだろう行くための最善の方法..です

編集:

編集に対応するためあなたは次のようなことをすることができます:

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(); 
    } 

} 

そして、それはうまくいくはずです。 Java 7で私のためにコンパイルします。

+0

これまで助けてくれてありがとうございましたが、与えられたコードを入力してインポートを追加してEventListenerを実装すると、addEventListenerのコードの最後の行に "'シンボルが見つかりません"というエラーが表示され、何が間違っている、助けてください。 – user1305374

+0

うーん..ええ、大丈夫。私のコードには多くのエラーがありました。それについて申し訳ありません!私は実際の例で更新します。 –

+0

ありがとうございます! – user1305374

1

ここには、単一のJFrameしかない場合のコードがあります。コンポーネントを初期化するときに追加する必要があります。

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