我想制作一个组件,它显示JTextArea中一组单词的所有匹配,以及一些上下文(N行,可能是用户可配置的。)
我已经有了突出显示匹配的代码,因此我知道它们的偏移量,因此可以确定它们的界限。我知道文本的行高,所以我可以确定我想要绘制的上下文区域的边界。
但是有些像JViewport这样的类只能绘制底层组件的多个视图吗?由于JViewport是一个普通的Swing组件,因此只要将相同的文本区域放在另一个视口下,它就会从第一个视口中分离出来。
编辑:实际上事实证明,我似乎无法确定上下文区域的界限,因为JTextArea给我的行到偏移映射不计算包裹线。 / p>
答案 0 :(得分:2)
这里的问题是JViewport是一个普通的容器,并将其视图组件视为子组件(并且每个组件在一个容器中只能是子组件)。这是非常合理的,因为总是只有一个组件可以具有焦点和类似的东西。
我不知道任何类似JViewport的类会做你想做的事情(绘制组件的视图而不是它的父级),但在你的情况下,你可以通过使用两个JTextAreas来实现大部分相同的功能。共享同一文档。那么你只需要同步插入符号动作(如果愿意的话),我认为。
答案 1 :(得分:0)
你所描述的并不存在。实际上,您似乎想要自定义JTextArea的显示。在这种情况下,您可以覆盖和更改JTextArea绘制自身的方式。要么在顶部绘画,要么完全改变它。
答案 2 :(得分:0)
在图像中绘制JTextArea并使用图像的必要片段。将图像的边界保留在原始的JTextArea中,然后单击可以计算的图像,单击JTextArea以获得正确的位置。