[英]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.