【问题标题】:Pressing enter key does not select checkbox按回车键不选择复选框
【发布时间】:2015-11-05 16:43:43
【问题描述】:

我已经实现了一个 JDialog 并添加了一个复选框,除了 ok 和 cancel 按钮。我已将取消作为默认按钮,当对话框出现时,默认选择取消,按下回车键时,执行取消操作。

通过按 Tab,当我到达复选框并按 Enter 时,它不会选中复选框。但是,在按空格键时,它会被选中。

但是,使用选项卡在确定和取消按钮之间切换,然后按 Enter,会执行相应的操作。

请建议应该怎么做才能在按下回车键时选中复选框。

【问题讨论】:

  • 你有一个Key Listener,如果check box 是焦点或类似的东西,它会选择它吗?
  • 据我记得“输入”通常不会选中复选框。因此使用空格键。否则,您可以将 KeyListener 添加到复选框。
  • 不要使用 KeyLIstener。 Swing 旨在与Key Bindings 一起使用。

标签: java jdialog enter


【解决方案1】:

每个 LAF 都有一个用于选中复选框的默认键。

查看Key Bindings,它将显示 LAF 中复选框的默认绑定。

如果您想为另一个键添加相同的功能,那么您需要管理键绑定。因此,要处理 Enter 键,您应该使用:

InputMap im = checkB.getInputMap();
KeyStroke existingKeyStroke = KeyStroke.getKeyStroke("SPACE");
KeyStroke addedKeyStroke = KeyStroke.getKeyStroke("ENTER");
im.put(addedKeyStroke, im.get(existingKeyStroke));
existingKeyStroke = KeyStroke.getKeyStroke("released SPACE");
addedKeyStroke = KeyStroke.getKeyStroke("released ENTER");
im.put(addedKeyStroke, im.get(existingKeyStroke));

以上代码将支持单个组件上的 Enter 键。如果您希望应用程序中的所有复选框都支持 Enter 键,那么您可以使用:

InputMap im = (InputMap)UIManager.get("CheckBox.focusInputMap");

【讨论】:

  • 非常感谢,帮了大忙。
  • @AlokRanjan,很高兴它有帮助。不要忘记通过单击复选标记“接受”答案,以便人们知道问题已解决。您还应该接受之前问题的答案。
  • @AlokRanjan,我没有说“赞成票”。我说“接受”。既然你问了这个问题,你就可以“接受”最佳答案。这有助于人们在搜索论坛时知道问题已得到解决。
猜你喜欢
  • 2017-07-07
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多