我已经实现了一个JDialog,并添加了一个除了ok和cancel按钮之外的复选框。我将取消作为默认按钮,当对话框出现时,默认选择取消,按回车键,执行取消操作。
按Tab键,当我到达复选框并按Enter键时,它不会选中该复选框。但是,在按空格键时,它会被选中。
但是,使用选项卡切换确定和取消按钮然后按Enter键会执行相应的操作。
请建议应该做什么,以便在按Enter键时选中复选框。
答案 0 :(得分: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");