检测JTextField中的组合键?

时间:2011-12-16 13:34:32

标签: java swing keypress

如何在JTextField中检测到组合键 Shift + 标签

3 个答案:

答案 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()