如何通过添加元素来增加JList的垂直大小

时间:2015-12-05 15:50:02

标签: java swing jlist

我有一个JList,它的垂直尺寸足以容纳一个元素(图像1)

添加元素时,它看起来像(图像2)

但我需要的是这个(图片3)

我希望在添加额外元素时增加JList的垂直大小。这应该继续,直到JList的垂直大小达到其限制。 (说200) 有没有办法克服这个问题?

我尝试过使用,

        DefaultListModel<String> dl = new  DefaultListModel<>();
    dl.addListDataListener(new ListDataListener() {

        @Override
        public void intervalAdded(ListDataEvent e) {
            // do nothing
        }

        @Override
        public void intervalRemoved(ListDataEvent e) {
            // do nothing
        }

        @Override
        public void contentsChanged(ListDataEvent e) {
            System.out.println("content changed");
        }
    });
    jList1.setModel(dl);

但添加元素(无输出)时不会发生任何事情

1 个答案:

答案 0 :(得分:1)

您可以使用JList的setVisibleRowCount(...)方法来控制JList的首选大小。

因此,您需要向ListDataListener的{​​{1}}添加ListModel来监听数据中的更改。每当生成JList事件时,您都会重置contentChanged的可见行数。

您需要将行数限制在合理的最大值,例如20。