【问题标题】:Setting caret position where caret has not been in JTextArea设置插入符号在 JTextArea 中没有出现的插入符号位置
【发布时间】:2013-07-18 00:48:37
【问题描述】:

无论如何我可以在我的 JTextArea 中设置插入符号位置之前没有插入符号位置吗?我想使用 KeyEvent.VK_ENTER 上的 KeyListener 将文本添加到我的 JTextArea,然后将插入符号位置设置在我将文本添加到 JTextArea 的下方的一行。

干杯,

泰勒

【问题讨论】:

    标签: java swing jtextarea keylistener caret


    【解决方案1】:

    在 KeyEvent.VK_ENTER 上使用 KeyListener

    不要使用 KeyListener。 Swing 被设计为与键绑定一起使用。阅读 How to Use Key Bindings 上的 Swing 教程部分了解更多信息。

    将插入符号位置设置在我将文本添加到 JTextArea 的下方一行。

    确保在添加文本时将“\n”附加到文本区域。然后你可以使用:

    textArea.setCaretPosition( textArea.getDocument().getLength() );
    

    【讨论】:

      【解决方案2】:
      • 我强烈建议您不要使用 KeyListener,因为不鼓励使用低级侦听器,这会使您的代码更难升级和修改。
      • 您的最终目标是什么,可能有更好的方法。
      • 要添加新行,只需执行以下操作:通过 textArea.append("\n"); 将新行添加到 JTextArea
      • 然后通过setCaretPosition(...)将光标移动到JTextArea的末尾

      【讨论】:

      • 我的最终目标是从 matlab 服务器获取一个字符串并将其附加到我创建的 GUI 中的 JTextArea 中。我使用键侦听器 VK_ENTER 将文本发送到 matlab 服务器。您对关键侦听器以外的替代路线有什么建议吗?
      • @TaylorFireman:是的,取决于具体情况,可以是 Key Bindings、DocumentListener 还是 DocumentFilter。
      猜你喜欢
      • 2011-08-22
      • 2013-05-21
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 2013-07-25
      相关资源
      最近更新 更多