2012-05-30 41 views
-1

我試圖讓我的鍵盤輸入工作,但它沒有檢測到任何東西 - 可能是因爲我使用CardLayout,並且我在調用show()函數時沒有正確設置焦點。CardLayout焦點java

目前,它看起來像這樣。

containerPanel.add(new GameArea(), "newGameArea"); 
     CardLayout cl = (CardLayout)(containerPanel.getLayout()); 
     //containerPanel.requestFocusInWindow(); 
     cl.show(containerPanel, "newGameArea"); 

任何幫助將不勝感激。

+0

如何獲取InputMap的鍵綁定?你在使用哪種情況?我建議使用'JComponent.WHEN_IN_FOCUSED_WINDOW'。例如:'myComponent.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)'然後焦點停止成爲一個主要問題。 –

+0

還是你沒有使用鍵綁定,而是使用KeyListener(你不說)?如果是這樣,那麼請使用鍵綁定,因爲這是一個Swing應用程序,而不是AWT應用程序。 –

回答

3
  • 重點是異步的,那麼你就必須包裝requestFocus的到的invokeLater

  • 這應該是有不添加其他Listenet採取集中

  • 沒有的情況下工作使用KeyListener for Swing JComponents,請使用KeyBindings而不是

+0

如何使用'KeyBindings'? – user432584920684

+2

通過閱讀Oracle教程,通過在此論壇中搜索 – mKorbel

+0

@ToGetHer:實際上,當谷歌搜索'java密鑰綁定'時第一次命中。 1+ –