2016-11-26 2 views
0

まず、「KeyListenerは機能しません」という脅威がたくさんあることは知っています。問題は、私はなぜそれが動作しないと他のスレッドは私のための助けではないか分からない... ユーザーが "シフト"を押すと、プログラムが終了するはずです。ただ、KeyListenerインタフェースを実装KeyListenerは機能しません

public class Main extends JFrame implements KeyListener{ 

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

public Main(){ 
    JFrame guiFrame = new JFrame(); 

    //make sure the program exits when the frame closes 
    guiFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
    guiFrame.setLayout(new FlowLayout()); 
    guiFrame.setTitle(""); 
    guiFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
    guiFrame.setUndecorated(true); 
    guiFrame.setAlwaysOnTop(true); 
    guiFrame.getContentPane().setBackground(Color.black); 


    JLabel jb1 = new JLabel("WER DAS LIEST IST BLÖD",JLabel.CENTER); 
    jb1.setFont(new Font("Serif", Font.BOLD, 140)); 
    jb1.setForeground(Color.WHITE); 
    jb1.setLocation((guiFrame.getWidth()-jb1.getWidth())/2,50); 


    guiFrame.add(jb1); 
    //This will center the JFrame in the middle of the screen 
    guiFrame.setLocationRelativeTo(null); 
    guiFrame.setVisible(true); 
} 

@Override 
public void keyPressed(KeyEvent e) { 

} 

@Override 
public void keyReleased(KeyEvent e) { 
    if(e.getKeyCode() == KeyEvent.VK_SPACE){ 
     System.exit(0); 
    } 

} 

@Override 
public void keyTyped(KeyEvent e) { 
    // TODO Auto-generated method stub 

} 

}

+0

シフトしていない申し訳ありませんが、*スペース –

+0

編集ボタンがありますあなたの投稿の下にあなたの投稿の間違いを修正し、関連する追加情報を追加するためにそれを利用してください。何かエラーがありますか?デバッグを追加すると、公開されたキーリリースイベントが表示されますか? e.getKeyCode()の値は何ですか? – scrappedcola

+0

ユーザーがSHIFTを押したときにアプリを終了したい場合は、なぜVK_SPACEをテストしていますか? –

答えて

3

十分ではありません - あなたは、いくつかのコンポーネント(あなたのケースでJFrame)に追加する必要があります。

APIについてはこちらを参照してください

guiFrame.addKeyListener(this); 

のようなものを試してみてください:http://docs.oracle.com/javase/8/docs/api/java/awt/Component.html#addKeyListener-java.awt.event.KeyListener-

そして、ここでは公式のチュートリアルのために: https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

+0

ありがとう –

関連する問題