【问题标题】:getting the selected item scrolled to top of the JList将所选项目滚动到 JList 的顶部
【发布时间】:2012-06-14 16:09:42
【问题描述】:

ensureIndexIsVisible() 使选中项出现在 JList 的末尾,那么如何使选中的项出现在 JList 的顶部而不是末尾?

【问题讨论】:

  • “有没有办法获取当前显示的顶部元素的索引” 我已经编写了包含数十个列表的 GUI,并且从不需要这些信息。你为什么?
  • uhh .....我使用了 ensureIndexIsVisible(),但被选中的会显示在 JList 的最后。我希望它显示在顶部。我不是挥杆的专业人士,不知道该怎么做
  • 这是一个更好地编辑到问题中的评论。作为一般规则,最好说明目标(将项目滚动到中心)而不是策略(获取最顶层项目的索引)。
  • 是的,我应该直奔主题..

标签: java swing visibility jscrollpane 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】:

        试试这个:

        1. 使用list.getFixedCellHeight()获取每个项目的高度
        2. 使用scrollpane.getViewport().getViewPosition().y 获取视口边界
        3. 将 (2) 除以 (1) 得到隐藏单元格的数量,将其四舍五入,这就是您的索引。

        可能有一种更简单的内置方法。查看JListJScrollpane 的API。

        【讨论】:

        • 谢谢..list.getFixedCellHeight() 并获得垂直视图位置可以节省一天的时间......
        • 是的...有一个更简单的解决方案,使用 scrollRectToVisible
        猜你喜欢
        • 2010-12-05
        • 1970-01-01
        • 2012-08-31
        • 2017-05-12
        • 2013-01-04
        • 2015-10-22
        • 2012-07-25
        • 1970-01-01
        • 2013-10-26
        相关资源
        最近更新 更多