2013-06-16 5 views
1

저는 Keyevents를 사용하는 Java 게임을하고 있습니다. 기본적으로, 그것은 내가 향상시키고 자했던 템플릿이지만, 이제는 기본적인 것들로 고심하고 있습니다. 여기가는 다음의 keyPressed() 메소드에서 내 Keyevents가 작동하지 않는 이유는 무엇입니까?

이 같은 행사의 숫자입니다 : 내가 KeyEvent.VK_1처럼, 또 다른의 KeyEvent를 추가하려고 할 때, 그러나

public void keyPressed(int key) { 
    switch (key) { 
    case KeyEvent.VK_A: 
     System.out.println("A"); 
     methodA(); 
     break; 
    case KeyEvent.VK_B: 
     System.out.println("B"); 
     methodB(); 
     break; 
    } 
} 

, 그것은/키를 작동하지 않습니다 인식되지 않습니다. 왜 그런가요? 내가 놓친 게 있니?

+1

을 처리하는 방법을 키 이벤트를 결정하는 당신에게 큰 유연성을 줄 것이다, Key Bindings해야 하는가? 아마도 http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html –

+0

코드도 KeyEvent 유형일 것입니다 – nachokk

+2

다른 키에 응답 할 수 없습니까? 아니면 숫자 키? Swing의 경우 Key Bindings 사용을 고려 했습니까? 어떤 '1'을 알아 내려고하는거야? 키보드 위쪽에 있거나 숫자 패드에있는 쪽이 옆에 있습니까? 이것은 실제로 차이를 만듭니다. –

답변

1

에는 잘 알려진 문제가 있습니다. 키 이벤트를 수신하려면 등록 할 구성 요소에 포커스가 있어야하고 포커스가 있어야합니다. 키 이벤트가 청취자에게 도달하기 전에 (등록한 구성 요소에 의해) 소비 될 수도 있습니다.

대신, 당신은 무엇을 작동하지 않습니다

+0

'청취자에게 도달하기 전에 키 이벤트가 소비 될 수도 있습니다''KeyEvent'가 관련 구성 요소에 의해 실행 되더라도 때때로 KeyListener 메소드가 호출되지 않는다는 것을 의미합니까? –

+2

예. 주요 청취자는 쇠사슬로 묶여 있기 때문에 그 중 하나가 이벤트를 소비하면 다른 청중은 그 청중을 벗어날 수 없습니다. Tis는 이벤트가 파견되는 방법에 내려갈 것이다. 그러나 나는 Swing의 나의 초기의 년에 이것 위에 걸렸다 – MadProgrammer

+0

Ahh. 나는 지금 본다.이 귀중한 정보를 위해 고맙다 :) +1 –

관련 문제