如何滚动到JScrollPane中显示的文档中的给定位置

时间:2012-07-02 16:52:08

标签: swing jscrollpane

在使用Java Swing组件的应用程序中,我在不可编辑的JTextPane内部有JScrollPane,以及用户可以输入某些条件的其他一些字段。如果用户单击某个按钮或菜单项,则会在JTextPane中搜索符合给定条件的文档部分,如果找到匹配,则该部分将突出显示。

那部分解决了;我可以找到相关的文档片段,知道它的起点和终点(以整数偏移量表示),然后突出显示它。

但突出显示的段可能已从屏幕滚动,我需要将其滚动到JScrollPane的可见部分内。我看到scrollRectToVisible(Rectangle)上的方法JComponent似乎可以完成这项工作,但我没有看到如何将文本文档位置整数转换为Rectangle

请注意,它是一个不可编辑的JTextPane,我不想将光标移动到突出显示的段(用户无论如何都看不到光标),我只想让段显示在JScrollPane的可见区域内

2 个答案:

答案 0 :(得分:2)

您可以使用modelToView(...),它可以返回一个Rectangle对象,您可以将其用于您的案例。

以下是@camickr关于同一

的一个example

此处再Example

答案 1 :(得分:0)

如果文本行的高度相同,则Rectangle的y值为文档位置*行高。

如果文本行的高度不同,则Rectangle的y值是行高的总和,但不包括文档位置。

Rectangle的x值将为零,或者对文本有意义的偏移量。