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

如何使 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中部分字符串的矩形是什么?


慕姐4208626
浏览 83回答 1
1回答

慕尼黑8549860

我已经能够通过直接调用滚动条上的 setValue 来操纵滚动条位置。myScrollPane.getVerticalScrollBar().setValue()问题是,要设置什么值?你能假设文本行是一样的吗?如果它们包装,事情就会变得复杂。我将假设他们没有,并且每行的高度是相同的,因为字体和大小是相同的。然后,您需要知道当前显示的行的索引是什么,以及行的总计数。获得该值后,通过将行索引乘以编辑器高度而不是行数,将行索引转换为编辑器 Y 位置,并进行相应的设置。myScrollPane.getVerticalScrollBar().setValue(&nbsp;(int)&nbsp;indexOfCurrentLine&nbsp;*&nbsp;myEditorPane.getHeight()&nbsp;/&nbsp;countOfLines&nbsp;);显然,如果没有SSCCE,就无法测试其中任何一个。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java