如何使 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,就无法测试其中任何一个。
添加回答
举报
0/150
提交
取消