关于 java:同一个 JTextArea 上的多个视口? | 珊瑚贝

Multiple viewports onto the same JTextArea?


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

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

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

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


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

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

  • 我试图编写这样一个视口,它保持视图矩形到文本矩形的映射并返回。这可以正确呈现,但现在当然事件将不起作用。所以看起来 JTextArea 确实必须存在于组件层次结构中,但不知何故我需要让它的不同位以不同的方式翻译。


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


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

  • 它与 JTextArea 绘制自身的方式截然不同,因为 JTextArea 绘制了所有文本,但我的组件只会在具有突出显示的部分周围绘制。目前我正在与此作斗争,并且可以让它正确绘制,但当然鼠标输入是下一个问题。
  • 不确定你在做什么,但你可以让 JTextArea 绘制所有内容,你可以只绘制突出显示的部分或 JTextArea 绘制的区域,而不是相反。


来源:https://www.codenong.com/5148746/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9195.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?