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));
}
}
}
}
Related examples in the same category