Multiple viewports onto the same JTextArea?
我想做一个组件,它显示 JTextArea 中一组单词的所有匹配项,以及一些上下文(N 行,可能是用户可配置的。)
我已经有了高亮匹配的代码,所以我知道它们的偏移量,因此可以确定它们的界限。我知道文本的行高,因此我可以确定要绘制的上下文区域的边界。
但是有像 JViewport 这样的类只能绘制底层组件的多个视图吗?由于 JViewport 是一个普通的 Swing 组件,一旦您将相同的文本区域放在另一个视口下,它就会与第一个视口分离。
编辑:实际上,事实证明,我似乎无法确定上下文区域的边界,因为 JTextArea 给我的行到偏移映射不计算换行。
这里的问题是JViewport是一个普通的容器,把它的视图组件当作子组件(每个组件只能是一个容器的子组件)。这是相当合理的,因为总是只有一个组件可以拥有焦点,以及类似的事情。
我不知道有任何类似 JViewport 的类可以做你想做的事(绘制一个组件的视图而不是它的父级),但在你的情况下,你可以通过使用两个 JTextAreas 来实现大部分相同共享同一个文档。我认为,您只需要同步插入符号的移动(如果需要)。
在图像中绘制 JTextArea 并使用图像的必要片段。将图像的边界保持在原始 JTextArea 中,因此单击图像可以计算单击 JTextArea 以获得正确的位置。
正如你所描述的那样,没有任何东西存在。事实上,听起来您想自定义 JTextArea 的显示。在这种情况下,您可以覆盖和更改 JTextArea 绘制自身的方式。要么在上面画更多,要么完全改变它。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/267548.html