如何在JTextField
中检测到组合键 Shift + 标签?
答案 0 :(得分:2)
这就是你想要的吗?
javax.swing.JTextField textField = new javax.swing.JTextField();
textField.setFocusTraversalKeysEnabled(false);
javax.swing.Action myAction = new javax.swing.AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
//Insert arbitrary code here
}
};
textField.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, Event.SHIFT_MASK), "myCode");
textField.getActionMap().put("myCode", myAction);
答案 1 :(得分:1)
这是一个特殊情况,因为 Shift + Tab 是焦点遍历键。焦点子系统通常使用焦点遍历键,因此您需要通过调用
来防止这种情况component.setFocusTraversalKeysEnabled(false);
在JTextField
上。然后,您将能够检测 Shift + Tab 组合并自行处理。
有关您可以下载和试验的示例程序,请参阅How to Write a Key Listener,了解其工作原理。
答案 2 :(得分:1)
选项卡和 Shift + 选项卡仅在/默认情况下(只有KeyBinding
可以更改)关于移动{{1从Focus
到另一个JComponent
,我认为您必须在FocusListener中查看详细说明FocusSubsystem,注意Focus
来自Native OS,默认情况下是asynchronous
,大部分时间都需要将其行动/事件延迟到invokeLater()