将所选项目滚动到 JList 的顶部
Posted
技术标签:
【中文标题】将所选项目滚动到 JList 的顶部【英文标题】:getting the selected item scrolled to top of the JList 【发布时间】:2012-06-14 16:09:42 【问题描述】:ensureIndexIsVisible() 使选中项出现在 JList 的末尾,那么如何使选中的项出现在 JList 的顶部而不是末尾?
【问题讨论】:
“有没有办法获取当前显示的顶部元素的索引” 我已经编写了包含数十个列表的 GUI,并且从不需要这些信息。你为什么? uhh .....我使用了 ensureIndexIsVisible(),但被选中的会显示在 JList 的最后。我希望它显示在顶部。我不是挥杆的专业人士,不知道该怎么做 这是一个更好地编辑到问题中的评论。作为一般规则,最好说明目标(将项目滚动到中心)而不是策略(获取最顶层项目的索引)。 是的,我应该直奔主题.. 【参考方案1】:这个问题很老了,但也许我的回答会有用。
myList.setVisibleRowCount(x);
int selected=myList.getSelectedIndex();
myList.scrollRectToVisible(myList.getCellBounds(selected,selected+x));
【讨论】:
【参考方案2】:好吧,我终于得到想要的了
jlist.ensureIndexIsVisible(index);
int num;
if(index+1000>datalist.size())
num = datalist.size()-index-1;
else
num = 1000;
jlist.scrollRectToVisible(jl.getCellBounds(index,index+num));
jlist.setSelectedIndex(index);
这使我在索引处选择的项目出现在 JList 的顶部
【讨论】:
【参考方案3】:试试这个:
yourList.getFirstVisibleIndex();
【讨论】:
【参考方案4】:试试这个:
-
使用
list.getFixedCellHeight()
获取每个项目的高度
使用scrollpane.getViewport().getViewPosition().y
获取视口边界
将 (2) 除以 (1) 得到隐藏单元格的数量,将其四舍五入,这就是您的索引。
可能有一种更简单的内置方法。查看JList 和JScrollpane 的API。
【讨论】:
谢谢..list.getFixedCellHeight() 并获得垂直视图位置可以节省一天的时间...... 是的...有一个更简单的解决方案,使用 scrollRectToVisible以上是关于将所选项目滚动到 JList 的顶部的主要内容,如果未能解决你的问题,请参考以下文章
Silverlight Combobox 将所选项目设置为 datagrid 的所选项目