使用Java GUI使用KeyListener进行益智游戏?

时间:2015-06-18 12:08:13

标签: java swing keylistener

我想在我的益智游戏中实现关键监听器。   我已经使用动作监听器完成了它,但现在想继续使用关键监听器。

我的行动倾听者的逻辑是:

单击特定按钮时 它检查相邻按钮的图标是否为空 如果它为null,则它们的图标将被交换 现在,我怎样才能与关键听众一起做?   谢谢。

if( b1==e.getSource()){

    if(b2.getIcon()==null){
        b2.setIcon(b1.getIcon());
        b1.setIcon(null);
    }
    else if(b5.getIcon()==null){
        b5.setIcon(b1.getIcon());

        b1.setIcon(null);   
    }
 }

1 个答案:

答案 0 :(得分:1)

您告诉我们您已经实现了KeyListener,但它无法正常工作。没有代码,我们所能做的只是猜测,所以这里是我的:

  • KeyListeners需要专注才能工作,因此如果您的GUI有任何可以窃取焦点的组件,例如JButtons,所有JTextComponents,如JTextArea或JTextField,JComboBoxes,JLists,......那么您的KeyListener将无法正常工作
  • 一个方法是强制使用KeyListener的组件获得焦点并贪婪地抓住焦点。这是不可取的,因为它会强制您的程序出现异常行为,因为大多数用户希望按钮在按下时具有并保持焦点,并且如果文本组件不被允许聚焦则不会起作用。
  • 同样,最好的解决方案通常是使用Key Bindings,因为它们可以在不需要焦点的情况下工作,并且是一种更清晰的方式来捕获击键。请查看here,然后查看我使用密钥绑定hereminimal example program or MCVE的示例代码。

再次为了更好和更具体的帮助,请告诉我们更多细节并向我们展示您的相关代码,最好是{{3}}。