2011-11-25 4 views
1

은 내가 다음 코드를 사용하여 X 내부의 내부 클래스 KeyInputHandler을 추가 javax.swing.JFrame 확장하는 클래스의 X 구현 해요 :Java에서 사용자 입력을 올바르게 처리하는 방법은 무엇입니까?

private class KeyInputHandler extends KeyAdapter { 
public void keyPressed(KeyEvent e) { 
if (e.getKeyCode() == KeyEvent.VK_LEFT) { 


} 
if (e.getKeyCode() == KeyEvent.VK_RIGHT) { 
    ... 
} 
if (e.getKeyCode() == KeyEvent.VK_UP) { 
    ... 
} 
if (e.getKeyCode() == KeyEvent.VK_SPACE) { 
    ... 
} 
if (e.getKeyCode() == KeyEvent.VK_B) { 
    ... 
} 
} 
} 

을하지만 어떤 이유로 내 입력을 인식하지 못합니다. X 클래스에 다른 것을 추가해야합니까?

+0

작업 코드를 게시 할 수 있습니까? 클래스를 만드는 것만으로 자동으로 호출되는 것은 아닙니다. – Kane

+1

http://stackoverflow.com/questions/5048536/keyadapter-is-not-responding-java addKeyListener를 호출 했습니까? –

답변

3

KeyListeners는 까다로울 수 있으며 가장 중요한 것은 추가 된 구성 요소에 포커스가있는 경우에만 작동합니다. 그렇지 않으면 당신은 가라 앉았다. 또한, KeyListener를 추가 한 부분에 아직 게시하지 않은 코드는 표시되지 않습니다. 예, 클래스가 있습니다. 실제로 클래스를 사용하여 객체를 만들고 그것을 아무 것에나 추가 할 수 있습니까?

그러나 응용 프로그램과 문제 유형에 따라 key bindings (링크 체크 아웃)을 사용하는 것이 더 좋을 것입니다. 문제를 집중할 때 더 유연한 상위 개념입니다.

편집
의견 요청 문제는

초점 무엇

입니까?

Focus Subsytem tutorial에 따르면 GUI 구성 요소가 키보드 입력을 수신 할 때 포커스가 있습니다. 보통 이것은 어떤 식 으로든 강조 표시되어 나타납니다.

관련 문제