Java Swing ListDataListener handle JList data event

Description

Java Swing ListDataListener handle JList data 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);/*  w  w  w . j  a v  a2s.  co 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);
   }
}



PreviousNext

Related