Java Swing:稍微修改现有的键盘行为? (右箭头最初应将光标设置为位置 0)

Java Swing: slightly modify existing keyboard behaviour? (right arrow should initially set cursor to position 0)

如果 Java Swing JTextField 获得焦点,它的所有文本都会被标记。

现在,我想修改行为,这样如果用户现在按下右箭头,光标应该设置到文本开头(位置 0)。

我能够获得 RIGHT Key 事件并将光标设置到位置 0, 但我不知道如何将 RIGHT Key 事件传递给原始代码,以便它可以处理正常行为。

JTextField preisFieldEUR = new JTextField(…);

AbstractAction right = new AbstractAction() {
  @Override
  public void actionPerformed(ActionEvent e) {
    if (preisFieldEUR.getSelectionEnd() - preisFieldEUR.getSelectionStart() == preisFieldEUR.getText().length()) {
      preisFieldEUR.setSelectionStart(0);
      preisFieldEUR.setSelectionEnd(0);
    } else {
      // Todo: How to pass this event to the original keyboard handler to
      // keep the normal behaviour?
    }
  }
};

preisFieldEUR.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), right);

非常感谢您的帮助!

你需要这样的东西:

Action oldAction = preisFieldEUR.getActionMap().get("caret-forward"); // probably another parameter?
AbstractAction right = new AbstractAction() {
  @Override
  public void actionPerformed(ActionEvent e) {
    if (preisFieldEUR.getSelectionEnd() - preisFieldEUR.getSelectionStart() == preisFieldEUR.getText().length()) {
      preisFieldEUR.setSelectionStart(0);
      preisFieldEUR.setSelectionEnd(0);
    } else {
        oldAction.actionPeformed(e)
    }
  }
};