Mega Code Archive

 
Categories / Java / Swing JFC
 

A graphical list selection monitor

/* Java Swing, 2nd Edition By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole ISBN: 0-596-00408-7 Publisher: O'Reilly  */ // SelectionMonitor.java //A graphical list selection monitor. // import java.awt.BorderLayout; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; public class SelectionMonitor extends JPanel {   String label[] = { "Zero", "One", "Two", "Three", "Four", "Five", "Six",       "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve" };   JCheckBox checks[] = new JCheckBox[label.length];   JList list;   public SelectionMonitor() {     setLayout(new BorderLayout());     list = new JList(label);     JScrollPane pane = new JScrollPane(list);     //  Format the list and the buttons in a vertical box     Box rightBox = new Box(BoxLayout.Y_AXIS);     Box leftBox = new Box(BoxLayout.Y_AXIS);     //  Monitor all list selections     list.addListSelectionListener(new RadioUpdater());     for (int i = 0; i < label.length; i++) {       checks[i] = new JCheckBox("Selection " + i);       checks[i].setEnabled(false);       rightBox.add(checks[i]);     }     leftBox.add(pane);     add(rightBox, BorderLayout.EAST);     add(leftBox, BorderLayout.WEST);   }   public static void main(String s[]) {     JFrame frame = new JFrame("Selection Monitor");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     frame.setContentPane(new SelectionMonitor());     frame.pack();     frame.setVisible(true);   }   // Inner class that responds to selection events to update the buttons   class RadioUpdater implements ListSelectionListener {     public void valueChanged(ListSelectionEvent e) {       //  If either of these are true, the event can be ignored.       if ((!e.getValueIsAdjusting()) || (e.getFirstIndex() == -1))         return;       //  Change the radio button to match the current selection state       //  for each list item that reported a change.       for (int i = e.getFirstIndex(); i <= e.getLastIndex(); i++) {         checks[i].setSelected(((JList) e.getSource())             .isSelectedIndex(i));       }     }   } }