【问题标题】:Dynamic Visible Row Count In JListJList 中的动态可见行数
【发布时间】:2012-03-17 06:07:33
【问题描述】:

我的 JList 与 JFrame 一起增长。我有以下代码:

defaultListModel = new DefaultListModel<SData>();
for (String string: listOfStrings) {
    defaultListModel.addElement(string);
}
jList = new JList<String>(defaultListModel);
jList.setCellRenderer(jListCellRenderer);
jList.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent arg0) {
        //codes to go
    }
});
jList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
jList.setLayoutOrientation(JList.VERTICAL_WRAP);
scrollPane = new JScrollPane(jList);

如果我为 setVisibleRowCount 方法设置了一些值,行号将变为固定,如果我不设置值,则默认值 8 开始播放。我想让这个值动态变化。

【问题讨论】:

  • 什么应该控制visibleRowCount?不管是什么,听那个属性并相应地更新 visibleRowCount。
  • 如需尽快获得更好的帮助,请发帖SSCCE
  • Size of JList 将不得不控制 setVisibleRowCount()

标签: java swing dynamic jlist rowcount


【解决方案1】:

我刚刚发现 jList.setVisibleRowCount(0) 在调整 JList 大小时可以自行调整。

【讨论】:

  • +1 负值也有效。另请参阅getPreferredScrollableViewportSize()
  • @trashgod,在setVisibleRowCount 方法中,他们正在检查max(0,paramRowCount),因此发送负值或零无关紧要。它只需要零。 :)
【解决方案2】:

呼应@kleopatras 的评论,目前尚不清楚是什么控制setVisibleRowCount()。随着行的添加,example 将封闭的Window 增长到预定义的限制,然后滚动条接管。它可能会给您一些想法,或者您可以按照@Andrew 的建议将其用作sscce 的基础。

附录:如果JList 的大小将控制计数,我将从模型的一半size() 开始。然后为添加到模型中的每个 n 添加一个可见行,以固定到预定义限制的固定比率。为了保持可靠的计数,您必须实现自己的 ListModel 或覆盖 DefaultListModel 中的变异器。

【讨论】:

  • Size of JList 将不得不控制 setVisibleRowCount()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 2015-04-01
  • 1970-01-01
  • 2018-01-25
  • 2012-01-13
  • 2019-05-04
  • 1970-01-01
相关资源
最近更新 更多