java - JList 重新填充非常慢

标签 java jlist defaultlistmodel

我有一个应该清空并重新填充的 JList 组件。以下代码(基于我的原始代码)显示了一个带有 JList 和 JButton 的简单窗口:

import java.awt.BorderLayout;
import javax.swing.*;

public class JListTest extends javax.swing.JFrame{
    JList jList;
    JButton button;
    DefaultListModel model;

    public JListTest() {
        jList = new JList();
        model = new DefaultListModel();
        jList.setModel( model );
        button = new JButton();

        getContentPane().add(jList, java.awt.BorderLayout.CENTER);

        button.setText("add 10000 items");
        button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                model.clear();
                for( int i=0; i<10000; ++i ) {
                    model.addElement( "aaaa");
                }
            }
        });
        getContentPane().add(button, BorderLayout.PAGE_START);        
        pack();        
    }

    public static void main(String args[]) {
        JListTest jlt =new JListTest();
        jlt.setSize(300, 300);
        jlt.setVisible( true );
    }
}

如果我按下按钮,插入(10000 项)非常快。如果我一次又一次地按下它,它仍然非常快。

如果我选择第三项并按下按钮,结果是一样的,插入非常快。

如果我选择第一项并按下按钮,程序会变得很慢(实际上我必须停止它)。

为什么选择第一项会减慢执行速度?

我已经使用 JDK 1.5 和 1.6 对其进行了测试。

最佳答案

我建议编写您自己的模型,它允许一次添加一堆值。我想这不是模型的补充,而是由此触发的 GUI 事物会扼杀性能。

关于java - JList 重新填充非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3576239/

相关文章:

java - 实现 Comparable 时的名称冲突

java - 自定义 Jackson 序列化器无法与 gson 一起使用

java - 向 jList Java 添加组件

java - DafaultListModel 中带有工具提示文本的 JList

java - JList 添加第一个元素非常慢

java - 为什么在处理 Paypal 付款时突然出现 'PKIX path building failed' 错误

java - @Local接口(interface)有很多实现

Java Swing 列表

java - 如何在jlist中添加图片

java - 将列表添加到 JScrollPane 时无法添加到 JList