2013-10-29 3 views
1

사용자가 키보드의 enter 버튼을 누르면, ok 버튼을 클릭 할 때처럼 프로그램이 작동해야합니다.JFrame의 keyListener가 반응하지 않음

내 코드 :

이제
public class T3 extends JFrame implements ActionListener { 

JButton okBtn; 

public T3() { 
    this.setFocusable(true); 
    this.addKeyListener(new KeyListener() { 
     @Override 
     public void keyTyped(KeyEvent e) { 
      // if enter button is pressed in keyboard, then show "Enter Button pressed" message 
     } 

     @Override 
     public void keyPressed(KeyEvent e) { 
      // if enter button is pressed in keyboard, then show "Enter Button pressed" message 
     } 

     @Override 
     public void keyReleased(KeyEvent e) { 
      //To change body of implemented methods use File | Settings | File Templates. 
     } 
    }); 
    add(createForm(), BorderLayout.NORTH); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setSize(400, 500); 
    setVisible(true); 
} 

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      new T3(); 
     } 
    }); 
} 

public JPanel createForm() { 
    JPanel panel = new JPanel(); 
    okBtn = new JButton("Ok"); 
    okBtn.addActionListener(this); 
    panel.add(okBtn); 
    return panel; 
} 

@Override 
public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == okBtn) { 
     System.out.println("Enter Button pressed"); 
    } 
} 
} 

, 반응하지!

+0

은 [자바 (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) – nachokk

+0

가능한 중복 [키 바인딩]에 봐 :이 SO 질문을 확인 JFrame의 KeyListener가 응답하지 않습니까?] (http://stackoverflow.com/questions/286727/java-keylistener-for-jframe-is-being-unresponsive) –

답변

3

하위 구성 요소에 포커스가있을 때 KeyListeners가 컨테이너에서 작동하지 않습니다. 애플리케이션 전체의 KeyListener가 필요합니다.

Setting up application wide Key Listeners

관련 문제