为了账号安全,请及时绑定邮箱和手机立即绑定

更改 JScroll 窗格的视图,以便 J 编辑器窗格的某个部分可见

更改 JScroll 窗格的视图,以便 J 编辑器窗格的某个部分可见

慕姐4208626 2022-09-14 17:37:51
如何使 j 编辑器窗格中的某个文本行在 JScroll 窗格中可见?private JEditorPane myEditorPane = new JEditorPane();private JScrollPane myScrollPane = new JScrollPane(myEditorPane);myEditorPane.setContentType("text/html");myEditorPane.setText("<html>" + getMyString(x) + "</html>");myEditorPane.repaint();getMyString 得到一个包含许多行的长字符串,以 \n 分隔。该计划有2个小组。然后,程序沿着上述面板中的行向下移动,并为每个行添加该行中的文本下划线,并在另一个面板中显示相关图像。每个图像都查看 1 秒钟,然后继续为下一行文本加下划线并显示下一个图像。我让它向下并依次加下划线,显示每行带下划线的文本的相关图像。但滚动窗格每次都会跳到起点。我想我必须在视口上使用滚动矩形可见,但是我如何找出JEditorPAne中部分字符串的矩形是什么?
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

我已经能够通过直接调用滚动条上的 setValue 来操纵滚动条位置。

myScrollPane.getVerticalScrollBar().setValue()

问题是,要设置什么值?你能假设文本行是一样的吗?如果它们包装,事情就会变得复杂。我将假设他们没有,并且每行的高度是相同的,因为字体和大小是相同的。然后,您需要知道当前显示的行的索引是什么,以及行的总计数。

获得该值后,通过将行索引乘以编辑器高度而不是行数,将行索引转换为编辑器 Y 位置,并进行相应的设置。

myScrollPane.getVerticalScrollBar().setValue( (int) indexOfCurrentLine * myEditorPane.getHeight() / countOfLines );

显然,如果没有SSCCE,就无法测试其中任何一个。



查看完整回答
反对 回复 2022-09-14
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信