gpt4 book ai didi

java - 按下 ENTER 键后 JtextArea 光标位置

转载 作者:行者123 更新时间:2023-12-02 05:36:13 31 4
gpt4 key购买 nike

伙计们,我面临着奇怪的问题基本上我有 2 个文本区域...(显示框和文本框)

在文本框中输入内容时,按下“Enter”键时,我希望在文本框中输入的所有文本都转到显示框...并且文本框应该为空...一切正常,除了...

文本传输后,文本框的光标位置不在最左上角...它在下面的一行上以某种方式闪烁!(可能是因为“ENTER”仍然被执行)...请参阅代码有什么想法吗?

提前感谢...只需要光标返回到最左上角,就像我们开始打字时的样子...无需使用 KeyReleased 事件...感觉不对...我确信这一点他不是这样做的吗……怎么说?

 public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_ENTER)// | (e.getKeyCode() == KeyEvent.VK_B))
{ //Toolkit.getDefaultToolkit().beep();

displaybox.append(textbox.getText() + "\n");

//textbox.setCaretPosition(0);
//textbox.setText("");
System.out.println(textbox.getCaretPosition());
}
}

public void keyTyped(KeyEvent e)
{}

public void keyReleased(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_ENTER)
{textbox.setCaretPosition(0);
textbox.setText("");
System.out.println(textbox.getCaretPosition());
}
}

最佳答案

所有 Swing 组件都通过使用键绑定(bind)来工作。 Enter 键的默认绑定(bind)是将换行符字符串添加到文本区域。如果您想更改 Enter 键的功能,请更改默认操作。不要尝试使用 KeyListener。

查看Key Bindings用于列出所有默认绑定(bind)的程序以及有关如何使用键绑定(bind)的 Swingng 教程的链接。如果运行该程序,您会发现 Enter 键调用由 中的 “insert-break” 标记标识的 Action Action 映射。因此,要替换 Action,您可以执行以下操作:

Action enter = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
displayBox.append( textBox.getText() + "\n" );
textBox.setText("");
}
};

textBox.getActionMap().put("insert-break", enter);

使用 KeyListener 的问题是,在处理 KeyEvent 后仍然会调用默认操作。

关于java - 按下 ENTER 键后 JtextArea 光标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24940827/

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