1

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

那部分解决了;我可以找到相关的文档段,知道它在哪里开始和结束(就整数偏移而言),并突出显示它。

但是那个突出显示的部分可能已经滚出屏幕,我需要将它滚动到 JScrollPane 的可见部分内。我看到有一种方法似乎可以完成这项工作,但我看不到如何从文本文档位置整数转换scrollRectToVisible(Rectangle)为.JComponentRectangle

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

4

2 回答 2

2

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

这是@camickr 的一个例子

这里还有一个例子

于 2012-07-02T18:18:40.007 回答
0

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

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

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

于 2012-07-02T16:56:56.820 回答