【发布时间】:2012-01-22 00:35:41
【问题描述】:
如何在JTextField 中检测组合键 Shift+Tab?
【问题讨论】:
如何在JTextField 中检测组合键 Shift+Tab?
【问题讨论】:
这是你想要的吗?
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);
【讨论】:
这有点特殊,因为 Shift+Tab 是一个焦点遍历键。焦点子系统通常会使用焦点遍历键,因此您需要通过调用
来防止这种情况发生component.setFocusTraversalKeysEnabled(false);
在您的JTextField 上。然后,您将能够检测到 Shift+Tab 组合并自行处理。
请参阅 How to Write a Key Listener 获取示例程序,您可以下载并试用以了解其工作原理。
【讨论】:
Tab 和 Shift+Tab 仅/默认情况下(只有 KeyBinding 可以更改)关于将 Focus 从一个移动JComponent 到另一个,我认为你必须在FocusSubsystem 中查看FocusListener 的详细描述,注意Focus 来自Native OS,默认情况下是asynchronous,大部分时间都需要延迟他们的行动/事件封装到invokeLater()
【讨论】: