Java Swing:使用 JList 和 JScrollPane 自动滚动
我遇到这个问题:
我有一个 JList(在 JScrollPane 内),其中包含大约 1000 个元素,并且该 JList 的尺寸显然不允许显示所有数据。现在,我在 JScrollPane 中有这个 JList,并且当我说 JList.setSelectedIndex() 时,JScrollPane 会自动滚动到 JList 上的索引上,并显示该元素。
先感谢您!
I'm having this problem:
I have a JList (within a JScrollPane) with say about 1000 elements, and the dimensions of this JList obviously doesn't allow to show all the data. Now, I have this JList within a JScrollPane and I need that when I say JList.setSelectedIndex(), the JScrollPane automatically scrolls into, and show that element on that index on the JList.
Thank you in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我相信您正在寻找以下方法:
public void EnsureIndexIsVisible(int index)
在封闭视口内滚动列表以使指定的单元格完全可见。这将使用指定单元格的边界调用scrollRectToVisible。要使此方法起作用,JList 必须位于 JViewport 内。
如果给定索引超出列表的单元格范围,则此方法不会产生任何结果。
I believe you are looking for the following method:
public void ensureIndexIsVisible(int index)
Scrolls the list within an enclosing viewport to make the specified cell completely visible. This calls scrollRectToVisible with the bounds of the specified cell. For this method to work, the JList must be within a JViewport.
If the given index is outside the list's range of cells, this method results in nothing.
我还没有对此进行测试,但您应该能够使用
其中 r 是包含感兴趣信息的
JList
总(虚拟)区域的区域。您可以根据 JList 的项目高度和行号计算所需的垂直偏移。编辑:语法的答案更容易实现。
I haven't tested this, but you should be able to use
where r is an area of your
JList
's total (virtual) area that contains the information of interest. You can calculate the required vertical offset from the JList's item height and the row number.EDIT: Syntax's answer is even easier to implement.