Use ListDataListener to listen to data changed event for JList in Java
Description
The following code shows how to use ListDataListener to listen to data changed event for JList.
Example
import java.awt.BorderLayout;
import java.awt.Container;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Enumeration;
/* w w w . j a v a 2 s . co m*/
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
public class Main {
static String labels[] = { "A", "B", "C",
"java2s.com"};
public static void main(String args[]) {
JFrame frame = new JFrame("Modifying Model");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
// Fill model
final DefaultListModel model = new DefaultListModel();
for (int i = 0, n = labels.length; i < n; i++) {
model.addElement(labels[i]);
}
JList jlist = new JList(model);
JScrollPane scrollPane1 = new JScrollPane(jlist);
contentPane.add(scrollPane1, BorderLayout.CENTER);
ListDataListener listDataListener = new ListDataListener() {
public void contentsChanged(ListDataEvent listDataEvent) {
appendEvent(listDataEvent);
}
public void intervalAdded(ListDataEvent listDataEvent) {
appendEvent(listDataEvent);
}
public void intervalRemoved(ListDataEvent listDataEvent) {
appendEvent(listDataEvent);
}
private void appendEvent(ListDataEvent listDataEvent) {
switch (listDataEvent.getType()) {
case ListDataEvent.CONTENTS_CHANGED:
System.out.println("Type: Contents Changed");
break;
case ListDataEvent.INTERVAL_ADDED:
System.out.println("Type: Interval Added");
break;
case ListDataEvent.INTERVAL_REMOVED:
System.out.println("Type: Interval Removed");
break;
}
System.out.println(", Index0: " + listDataEvent.getIndex0());
System.out.println(", Index1: " + listDataEvent.getIndex1());
DefaultListModel theModel = (DefaultListModel) listDataEvent
.getSource();
Enumeration elements = theModel.elements();
System.out.println(", Elements: ");
while (elements.hasMoreElements()) {
System.out.println(elements.nextElement());
System.out.println(",");
}
}
};
model.addListDataListener(listDataListener);
model.addElement("another");
frame.setSize(640, 300);
frame.setVisible(true);
}
}
The code above generates the following result.
Home »
Java Tutorial »
Swing »
Java Tutorial »
Swing »