空にして再入力する必要がある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アイテム)がとても速いです。何度も押すとまだとても速いです。
3番目の項目を選択してボタンを押すと、結果は同じで、挿入は非常に高速です。
最初の項目を選択してボタンを押すと、プログラムが非常に遅くなります(実際には停止する必要があります)。
最初の項目を選択すると実行が遅くなるのはなぜですか?
JDK1.5および1.6を使用してテストしました。