将所选项目滚动到 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 的顶部的主要内容,如果未能解决你的问题,请参考以下文章

从 JList 中删除所选项目

Silverlight Combobox 将所选项目设置为 datagrid 的所选项目

如何将所选项目从 recyclerview 显示到文本输入

颤振多选可搜索下拉菜单,将所选项目作为芯片添加到字段中

具有多项选择的 ExpandableListView 将所选项目保存到数组中

如何将所选项目从 QListWidget、QTableWidget 保存到 Qsettings