1

我想做一个组件,它显示 JTextArea 中一组单词的所有匹配项,以及一些上下文(N 行,可能是用户可配置的。)

我已经有了突出显示匹配项的代码,所以我知道它们的偏移量,因此可以确定它们的界限。我知道文本的行高,因此我可以确定要绘制的上下文区域的边界。

但是有像 JViewport 这样的类只能绘制底层组件的多个视图吗?由于 JViewport 是一个普通的 Swing 组件,只要将相同的文本区域放在另一个视口下,它就会与第一个视口分离。

编辑:实际上,事实证明,我似乎无法确定上下文区域的边界,因为 JTextArea 给我的行到偏移映射不计算换行。

4

3 回答 3

2

这里的问题是 JViewport 是一个普通的容器,把它的视图组件当作子组件(每个组件只能是一个容器的子组件)。这是非常合理的,因为总是只有一个组件可以拥有焦点,以及类似的事情。

我不知道有任何类似 JViewport 的类可以做你想做的事(绘制一个组件的视图而不是它的父级),但在你的情况下,你可以通过使用两个共享相同的 JTextArea 来实现大部分相同文档。我认为,您只需要同步插入符号的移动(如果需要)。

于 2011-02-28T23:55:56.507 回答
0

正如你所描述的,没有任何东西存在。事实上,听起来您想自定义 JTextArea 的显示。在这种情况下,您可以覆盖和更改 JTextArea 绘制自身的方式。要么在上面画更多,要么完全改变它。

于 2011-03-01T01:39:41.047 回答
0

在图像中绘制 JTextArea 并使用图像的必要片段。将图像的边界保持在原始 JTextArea 中,因此单击图像可以计算单击 JTextArea 以获得正确的位置。

于 2011-03-01T06:38:42.333 回答