作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个自动完成功能(包含在插入符号位置下的一个小窗口,建议您将要编写的内容)扩展 JTextPane
和 KeyAdapter
与此组件相关联,我这样写:
...
@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)那么你可以有两种选择使用
JTable
具有一列,实现起来非常简单 RowFilter ,不需要解决您所描述的任何问题,只需从简单的 JTextField
JList
带有 AutoComplete JComboBox / JTextField
3) KeyListener
不是正确的监听器,查看 Document/DocumentListener
4) 最简单、最舒适的方法是实现一个 JTable
,并使用 hightlighting
关于java - 什么时候调用 getMagic CaretPosition() 是合法的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8863721/
我正在开发一个自动完成功能(包含在插入符号位置下的一个小窗口,建议您将要编写的内容)扩展 JTextPane 和 KeyAdapter 与此组件相关联,我这样写: ... @Override publ
我是一名优秀的程序员,十分优秀!