Tag: caret

在Java Swing中,我可以实时接收Caret事件吗?

我正在编写一个类似hex编辑器的视图,它由两个JTextComponents(hex和ASCII)组成。 我想同步两个视图之间的选择,所以我为这两个组件实现了一个CaretListener。 这适用于响应用户长按,拖动和释放鼠标的选择事件。 当用户释放鼠标时,组件会收到caretUpdate。 当用户按下鼠标并拖动鼠标而不释放时,组件如何接收增量的caretUpdate事件?

如何使JTextComponent的插入符号跳过所选文本?

许多环境中本机文本字段的正常行为如下: 带有文本“abcdefg”的文本字段。 我用鼠标从左到右选择“efg”。 插入符号现在落后于“g”。 当我通过按左光标键一次将插入符号向左移动时,删除选择并且插入符号在“e”之前。 当我在JTextField或JTextArea(在Mac OS上测试)中执行相同操作时,完成相同的操作会导致插入符号在“g”之前。 我知道如何通过使用KeyListener并在每个组件上注册它来以编程方式更改它,但我正在寻找一种方法来更改我的整个应用程序。 那可能吗? 有没有国旗,我找不到或者我必须破解我的外观和感觉? 谢谢

如何防止JTextPane.setCaretPosition(int)中的内存泄漏?

我正在使用基于Swing的GUI开发Java应用程序。 该应用程序使用JTextPane输出日志消息,如下所示:1)截断现有文本以使总文本大小保持在限制之下; 2)追加新文本; 3)滚动到最后(实际逻辑略有不同,但这里无关紧要)。 我使用Eclipse和JVM Monitor来确定合理的文本大小限制并发现重大的内存泄漏。 我试图从底层文档中删除UndoableEditListener并禁用自动插入位置更新(通过使用DefaultCaret.NEVER_UPDATE和JTextPane.setCaretPosition(int)显式更改位置),但没有成功。 最后,我决定完全禁用更改插入位置,这样就修复了泄漏。 我有两个问题: 我的代码有问题吗? 如果是,我如何更改它以完成任务? 它是Swing / JVM错误吗? 如果是,我该如何举报? 细节: 这是SSCCE:带有textPane的GUI和两个按钮,用于小型和压力测试。 FIX和FIXXX标志对应于我修复内存泄漏的尝试。 package memleak; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.UndoableEditListener; import javax.swing.text.*; class TestMain { private JTextPane textPane; // try to fix memory leak private static final boolean FIX = false; // disable caret updates completely private […]

Java:游标当前位置的列号和行号

我想知道游标在JTextArea中的列号和行号。 即。 在记事本中,当我在第一行而不是状态栏时显示Ln 1,Col 1。 提前致谢…