编程语言
首页 > 编程语言> > java-极慢的JList重新填充

java-极慢的JList重新填充

作者:互联网

我有一个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问题会影响性能.

标签:jlist,defaultlistmodel,java
来源: https://codeday.me/bug/20191105/1998220.html