繁体   English   中英

禁用空格键触发 JButton 的点击

[英]Disabling space bar triggering click for JButton

JButton 认为按下空格键与单击 JButton 相同(假设 JButton 具有焦点,我在这里假设)。 有没有办法关闭这种行为,让他们忽略按空格键?

此外,更一般地说,是否有使用AbstractButtons执行此操作的技术?

aioobe 给出的链接显示了如何为单个按钮执行此操作。 如果您想对所有 JButton 执行此操作,您可以执行以下操作:

InputMap im = (InputMap)UIManager.get("Button.focusInputMap");
im.put(KeyStroke.getKeyStroke("pressed SPACE"), "none");
im.put(KeyStroke.getKeyStroke("released SPACE"), "none");

如果要为复选框和单选按钮执行此操作,则需要对每个不同的输入映射重复上述操作。

您可能需要阅读Enter Key 和 Button 它实际上与您想要的相反,因为它解释了如何在使用 Enter 键时调用按钮。 但这可能有助于解释为什么这个解决方案反过来起作用。

您可以通过执行禁用它

jbutton.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "none");

这似乎也适用于其他AbstractButton ,例如JRadioButton

正如@camickr下面指出的那样您可以一次性解决所有JButton的问题,如下所示:

InputMap im = (InputMap)UIManager.get("Button.focusInputMap");
im.put(KeyStroke.getKeyStroke("pressed SPACE"), "none");
im.put(KeyStroke.getKeyStroke("released SPACE"), "none");

keyup 上的空格键可以激活最后一个聚焦的元素。 要使元素散焦,请尝试:

${element}.blur()

使用:

button.setFocusable(false)

这样,只能使用鼠标而不是空格键单击按钮。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM