Extend AbstractListModel to create string array based model for JList in Java
Description
The following code shows how to extend AbstractListModel to create string array based model for JList.
Example
/*from w w w.j a v a 2 s. com*/
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
public class Main extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JList list1 = new JList();
JButton fillButton = new JButton();
public static void main(String[] args) {
Main bm = new Main();
}
public Main() {
this.getContentPane().setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
fillButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ListData ld = new ListData();
long tmStart = System.currentTimeMillis();
list1.setModel(ld);
list1.repaint();
long tmEnd = System.currentTimeMillis();
System.out.println(tmEnd - tmStart);
}
});
fillButton.setText("Fill");
this.getContentPane().add(new JScrollPane(list1), BorderLayout.CENTER);
this.getContentPane().add(fillButton, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
class ListData extends AbstractListModel {
String[] strings = new String[10000];
public ListData() {
for (int i = 0; i < 10000; i++) {
strings[i] = "bob" + i;
}
}
public int getSize() {
return strings.length;
}
public Object getElementAt(int index) {
return strings[index];
}
}
The code above generates the following result.
Home »
Java Tutorial »
Swing »
Java Tutorial »
Swing »