gpt4 book ai didi

java - 按 BACKSPACE 时返回上一个控件

转载 作者:行者123 更新时间:2023-12-01 11:10:30 24 4
gpt4 key购买 nike

我查了很多网站都没有得到结果。我有一些只接受一个字符的 JTextField。我需要的是,当我按 BACKSPACE 时,该字符被清除,并且焦点返回到之前的 JTextField 等等。我向所有 JTextField 添加了一个 KeyListener 并尝试了 KeyTyped、KeyReleased 和 KeyPressed 事件,但没有一个起作用。代码如下:

jt.addKeyListener(new KeyAdapter() {

public void keyTyped(KeyEvent evt) {

char c = evt.getKeyChar();

if(Character.isLetter(c) || Character.isISOControl(c))
{
evt = evt;
} else
evt.consume();
}

public void keyReleased(KeyEvent evt) {

if(evt.getKeyChar() == KeyEvent.VK_BACK_SPACE)
{
robot.keyPress(KeyEvent.VK_BACK_SPACE);
robot.keyRelease(KeyEvent.VK_BACK_SPACE);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_SHIFT);
}
}
});

感谢您的帮助。

最佳答案

  1. 不要使用 KeyListener。 Swing 被设计为与按键绑定(bind)一起使用。

  2. 不要使用机器人。 API 有一个方法可以让您转移焦点。

这是按键绑定(bind)的基本代码:

textField.getInputMap().put(KeyStroke.getKeyStroke("BACK_SPACE"), "backspace");
textField.getActionMap().put("backspace", new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
Component c = (Component)e.getSource();
c.transferFocusBackward();
}
});

I have some JTextFields that only accept one character.

您可能还想查看Text Field Auto Tab 。该类允许您在输入字符时自动跳到下一个文本字段。

关于java - 按 BACKSPACE 时返回上一个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32444165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com