JList中的动态可见行计数

时间:2012-02-27 18:57:47

标签: java swing dynamic jlist rowcount

我的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。我想让这个值动态变化。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

回应@ kleopatras的评论,不清楚什么控制setVisibleRowCount()。添加行时,此example会增加封闭的Window,直到达到预定义的限制,然后滚动条会接管。它可能会给你一些想法,或者你可以将它作为sscce的基础,正如@Andrew建议的那样。

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