Java tutorial
/* 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)); } } } }