The Java Program: ChangeList.java

  1 import java.awt.Container;
  2 import java.awt.BorderLayout;
  3 import java.awt.event.*;
  4 
  5 import javax.swing.JFrame;
  6 import javax.swing.JPanel;
  7 import javax.swing.JList;
  8 import javax.swing.DefaultListModel;
  9 import javax.swing.JButton;
 10 import javax.swing.JTextField;
 11 import javax.swing.JScrollPane;
 12 import javax.swing.event.ListSelectionListener;
 13 import javax.swing.event.ListSelectionEvent;
 14 
 15 
 16 public class ChangeList extends JList {
 17 
 18    private static final String db [] = {
 19       "Eli Card",
 20       "Elisha Card",
 21       "Frederick Eli Card",
 22       "Henry Truman Card",
 23       "Williams Card",
 24       "Julia Pickard Deforg",
 25       "Toussaint Deforge",
 26       "Mariah Hooker",
 27       "Annatasia S. Pendergast",
 28       "William Martin Pendergast",
 29       "Hallock Thomas Spaulding",
 30       "Lillian Maud Spaulding",
 31       "Thomas Spaulding",
 32       "Emma Parks Deal Wright",
 33       "John Wesley Wright"
 34    };
 35 
 36    final DefaultListModel mod = new DefaultListModel();
 37 
 38    ChangeList () {
 39       for (int i=0; i<db.length; i++) {
 40          mod.addElement (db[i]);
 41       }
 42       setModel (mod);
 43    }
 44       
 45    public static void main (String [] args) {
 46       final ChangeList list = new ChangeList ();
 47       
 48       class RemListener implements ActionListener {
 49          public void actionPerformed (ActionEvent e) {
 50             final int index = list.getSelectedIndex();
 51             if (index<0) return;
 52             list.mod.remove (index);
 53             final int size = list.mod.size();
 54             if (size==0) {
 55                final JButton b = (JButton) e.getSource();
 56                b.setEnabled (false);
 57             } else {
 58                list.setSelectedIndex (index>=size?size-1:index);
 59             }
 60          }
 61       }
 62 
 63       final JTextField name = new JTextField (15);
 64       final JButton addButton = new JButton ("add");
 65       final JButton remButton = new JButton ("remove");
 66       final JPanel controls = new JPanel ();
 67       controls.add (name);
 68       controls.add (addButton);
 69       controls.add (remButton);
 70 
 71       class AddListener implements ActionListener {
 72          public void actionPerformed (ActionEvent e) {
 73             final int index = list.getSelectedIndex();
 74             final int size = list.mod.size();
 75             final String text = name.getText();
 76             if (index==-1) {
 77                list.mod.addElement (text);
 78             } else {
 79                list.mod.insertElementAt (text, index+1);
 80             }
 81          }
 82       }
 83 
 84       final JFrame frame = new JFrame ("Swing JList Demo");
 85       // Default content pane is JPanel using the JRootPane layout
 86       // manager which acts like BorderLayout.
 87       final Container c = frame.getContentPane();
 88       c.add (new JScrollPane (list), BorderLayout.CENTER);
 89       c.add (controls, BorderLayout.SOUTH);
 90 
 91       name.addActionListener (new AddListener());
 92       addButton.addActionListener (new AddListener());
 93       remButton.addActionListener (new RemListener());
 94 
 95       frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Requires Java 1.3
 96       frame.setSize(350,300);
 97       frame.setVisible (true);
 98    }
 99 
100 }