Handling Changes to a List Component List data events are fired by a ListModel whenever one or more items are changed, added, or removed. JList list = new JList(new DefaultListModel()); list.getModel().addListDataListener( new MyListDataListener()); class MyListDataListener implements ListDataListener { public void contentsChanged(ListDataEvent evt) { // A non-contiguous set of items were added, // removed, or modified. ListModel model = (ListModel)evt.getSource(); // The next tow lines should be in one line for (int i=evt.getIndex0(); i<=evt.getIndex1(); i++) { process(model.getElementAt(i)); } } public void intervalAdded(ListDataEvent evt) { // The items between evt.getIndex0() and // evt.getIndex1(), inclusive, were added. ListModel model = (ListModel)evt.getSource(); for (int i=evt.getIndex0(); i<=evt.getIndex1(); i++) { process(model.getElementAt(i)); } } public void intervalRemoved(ListDataEvent evt) { // The items between evt.getIndex0() // and evt.getIndex1(), inclusive, // have been removed. } }