我正在创建一个 SQL 编辑器。我使用 JTextPane 作为编辑器。我想像 Eclipse 一样实现表名等的自动完成。
我认为在另一个组件之上显示信息的适当类是JPopupMenu
,它已经正确处理分层以显示自身。 JPopupMenu 有一个show()
方法将其“父”组件作为参数,并且它将在该组件的坐标空间中显示自己。由于您想要显示一系列术语供用户选择,因此菜单似乎是合适的。
要检查文本更改,您需要添加DocumentListener
到由 包装的文档JTextPane
;你可以使用它来访问它getDocument()
.
要找出光标(实际上是插入符号)的位置,您可以使用getCaretPosition()
。这会将插入符号在文本流中的位置返回为int
。您可以使用modelToView()
将该位置转换为实际的 (x,y) 坐标。这反过来会告诉您在哪里显示菜单。
You can use addKeyListener()
to catch keyboard events on your JTextPane
, like hitting Ctrl-Space.
所有这些的结合应该可以让你做你想做的事。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)