【问题标题】:String-based cursor positioning基于字符串的光标定位
【发布时间】:2012-02-16 22:25:07
【问题描述】:

如何在 Java 文本区域中定位光标位置,其中文本保存在 StringBuffer 中?我正在尝试在文本编辑器中实现退格功能。 API 列出了如何设置数据。我需要获取光标位置,以知道光标在哪个字符位置,而不是光标的屏幕全局坐标。

真诚感谢任何帮助。

【问题讨论】:

  • 您是如何管理文本的,即 JTextArea 和 StringBuffer 是如何连接和更新的?你是继承 AbstractDocument/AbstractDocument.Content 吗?你能给我们看看代码吗?
  • 我没有使用 JTextArea。那只是为了给我的问题提供背景。编辑器的 UI 是从 JFrame 扩展而来的。如何展示代码?我会说这个编辑窗格相当长。

标签: java textarea awt stringbuffer


【解决方案1】:

您必须在TextArea 中为按键事件写KeyListeners,并在TextArea 中保留您所在位置的虚拟光标。然后将该偏移量映射到您的StringBuffer,没有什么神奇的方法可以做到这一点。

【讨论】:

  • 感谢贾罗德·罗伯森的建议
【解决方案2】:

如果您使用的是 Swing JTextArea,请使用 JTextArea.getCaretPosition()

如果您使用的是 AWT TextArea,请参阅 Jarrod Roberson 的回答。

【讨论】:

  • UI 编程(以及相关的编程)对我来说仍然是新事物,我什至没有想过要考虑 Swing 或 AWT。我刚刚被告知通过实践来学习是有益的,并提供了一个简单的手工编码 UI 来尝试解决。感谢您的输入。它照亮了我的道路。
  • Swing 学习起来更复杂,但比 AWT 更灵活、更强大。您可能会发现 this article 比较 AWT、Swing 和 SWT 很有用。
  • 您代表我给自己带来了不便。我真诚地感谢凯文 K。
猜你喜欢
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多