Java Swing DefaultListModel handle list data changed event
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; public class Main { public static void main(String args[]) { JFrame frame = new JFrame("List data event"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DefaultListModel<String> model = new DefaultListModel<>(); model.addElement("CSS"); model.addElement("HTML"); model.addElement("Java"); JList<String> jlist = new JList<>(model); JScrollPane scrollPane1 = new JScrollPane(jlist); frame.add(scrollPane1, BorderLayout.CENTER); ListDataListener listDataListener = new ListDataListener() { public void contentsChanged(ListDataEvent listDataEvent) { appendEvent(listDataEvent);//from ww w . j a va 2s .c o m } 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(); System.out.println(theModel); } }; model.addListDataListener(listDataListener); JButton jb = new JButton("add F"); jb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { model.add(0, "First"); } }); frame.add(jb, BorderLayout.SOUTH); frame.setSize(640, 300); frame.setVisible(true); } }