3

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

4

2 回答 2

4

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

于 2012-03-01T06:42:00.330 回答
1

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

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

于 2012-02-28T04:14:03.020 回答