java - 什么时候调用 getMagic CaretPosition() 是合法的

标签 java swing autocomplete jtextpane caret

我正在开发一个自动完成功能(包含在插入符号位置下的一个小窗口,建议您将要编写的内容)扩展 JTextPaneKeyAdapter 与此组件相关联,我这样写:

...
@Override
public void keyReleased(KeyEvent e) {
    if (Character.isLetterOrDigit(e.getKeyChar())) {
        p = getCaret().getMagicCaretPosition();
        if (p != null) {
            SwingUtilities.convertPointToScreen(p, this);
            p.x = p.x + 2;
            p.y = p.y + 20;
            autocompletion.setLocation(p.x, p.y);
        }
    }
}
...

问题是有时 getCaret().getMagicCaretPosition() 返回 null,我不明白为什么。

调用此方法或实现此功能的合法方式是什么?

最佳答案

1) 我希望 (小窗口) == JWindow 不要忘记声明 JWindow(Window owner)

2)那么你可以有两种选择使用

3) KeyListener 不是正确的监听器,查看 Document/DocumentListener

4) 最简单、最舒适的方法是实现一个 JTable,并使用 hightlighting

关于java - 什么时候调用 getMagic CaretPosition() 是合法的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8863721/

相关文章:

java - Lucene 通配符匹配在化学符号上失败(?)

Java JTextpane 选项卡大小

asp.net - AutocompleteExtender 在母版页中不起作用

java - 是否可以映射名称与表列不同的 POJO 字段?

java - Android 在内部根目录中创建文件夹

java - 如何修复 api 21 的 context.getSystemService(class)?

java - 如何在swing中自由布局动态添加按钮等组件?

java - 如何在 Swing 中制作无限进度条?

winforms - 如何使文本框上的自动完成功能在空时显示建议

JQuery UI 自动完成实现不起作用