禁用空格键触发单击JButton

时间:2010-12-17 16:23:26

标签: java swing jbutton

JButtons考虑按空格键与点击JButton相同(假设JButton具有焦点,我在这里假设)。有没有办法关闭此行为,以便他们忽略按空格键?

另外,更一般地说,是否有使用AbstractButtons

执行此操作的技术

4 个答案:

答案 0 :(得分:3)

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 and Button。它实际上与您想要的相反,因为它解释了在使用Enter键时如何调用按钮。但它可能有助于解释为什么这个解决方案会反向运作。

答案 1 :(得分:1)

您可以通过执行

来禁用它
jbutton.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "none");

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

@camickr指出below时,您可以一次性解决所有JButton的问题,如下所示:

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

答案 2 :(得分:0)

键盘上的空格键可能会激活最后一个焦点元素。要使元素散焦,请尝试:

${element}.blur()

答案 3 :(得分:0)

使用:

inactive

这样,按钮只能用鼠标点击,不能用空格键。