java - 如何在添加元素的同时增加 JList 的垂直大小

标签 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);

但是添加元素时什么也不会发生(无输出)

最佳答案

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

那么您需要向 JListListModel 添加一个 ListDataListener 来监听数据的变化。每当生成 contentChanged 事件时,您都会重置 JList 的可见行计数。

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

关于java - 如何在添加元素的同时增加 JList 的垂直大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34107408/

相关文章:

java - 我应该使用什么 Swing 组件来显示歌曲列表和歌曲属性?

java - 从模型(AbstractListModel)中删除所有元素后更新 JList

java - 尝试解析 XML 并将信息显示到 GUI 上

java - 为什么菜单栏不显示?

image - 将 JPanel 保存为图像

java - 显示 JList 组件时出现问题

javascript - 我有错误:E/RecyclerView:未连接适配器;跳过布局

java - 将未知数量的对象添加到数组列表

java - 无法发送 JUL -> Logback

java - 在 render() 中随机更改图像,而不更改所有其他图像