ListDataEventDemopublic class ListDataEventDemo extends JApplet implements ListSelectionListener
Fields Summary |
---|
private JList | list | private DefaultListModel | listModel | private static final String | addString | private static final String | deleteString | private static final String | upString | private static final String | downString | private JButton | addButton | private JButton | deleteButton | private JButton | upButton | private JButton | downButton | private JTextField | nameField | private JTextArea | log | private static String | newline |
Methods Summary |
---|
protected java.net.URL | getURL(java.lang.String filename)
URL codeBase = this.getCodeBase();
URL url = null;
try {
url = new URL(codeBase, filename);
} catch (java.net.MalformedURLException e) {
System.out.println("Couldn't create image: badly specified URL");
return null;
}
return url;
| public void | init()
//Create and populate the list model.
listModel = new DefaultListModel();
listModel.addElement("Whistler, Canada");
listModel.addElement("Jackson Hole, Wyoming");
listModel.addElement("Squaw Valley, California");
listModel.addElement("Telluride, Colorado");
listModel.addElement("Taos, New Mexico");
listModel.addElement("Snowbird, Utah");
listModel.addElement("Chamonix, France");
listModel.addElement("Banff, Canada");
listModel.addElement("Arapahoe Basin, Colorado");
listModel.addElement("Kirkwood, California");
listModel.addElement("Sun Valley, Idaho");
listModel.addListDataListener(new MyListDataListener());
//Create the list and put it in a scroll pane.
list = new JList(listModel);
list.setSelectionMode(
ListSelectionModel.SINGLE_INTERVAL_SELECTION);
list.setSelectedIndex(0);
list.addListSelectionListener(this);
JScrollPane listScrollPane = new JScrollPane(list);
//Create the list modifying buttons.
addButton = new JButton(addString);
addButton.setActionCommand(addString);
addButton.addActionListener(new AddButtonListener());
deleteButton = new JButton(deleteString);
deleteButton.setActionCommand(deleteString);
deleteButton.addActionListener(
new DeleteButtonListener());
upButton = new JButton(
new ImageIcon(getURL("images/up.gif")));
upButton.setMargin(new Insets(0,0,0,0));
upButton.setActionCommand(upString);
upButton.addActionListener(new UpDownListener());
downButton = new JButton(
new ImageIcon(getURL("images/down.gif")));
downButton.setMargin(new Insets(0,0,0,0));
downButton.setActionCommand(downString);
downButton.addActionListener(new UpDownListener());
JPanel upDownPanel = new JPanel(new GridLayout(2, 1));
upDownPanel.add(upButton);
upDownPanel.add(downButton);
//Create the text field for entering new names.
nameField = new JTextField(15);
nameField.addActionListener(new AddButtonListener());
String name = listModel.getElementAt(list.getSelectedIndex())
.toString();
nameField.setText(name);
//Create a control panel (uses the default FlowLayout).
JPanel buttonPane = new JPanel();
buttonPane.add(nameField);
buttonPane.add(addButton);
buttonPane.add(deleteButton);
buttonPane.add(upDownPanel);
//Create the log for reporting list data events.
log = new JTextArea(10, 20);
JScrollPane logScrollPane = new JScrollPane(log);
//Create a split pane for the log and the list.
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
listScrollPane, logScrollPane);
Container contentPane = getContentPane();
contentPane.add(buttonPane, BorderLayout.NORTH);
contentPane.add(splitPane, BorderLayout.CENTER);
| private void | swap(int a, int b)
Object aObject = listModel.getElementAt(a);
Object bObject = listModel.getElementAt(b);
listModel.set(a, bObject);
listModel.set(b, aObject);
| public void | valueChanged(javax.swing.event.ListSelectionEvent e)
if (e.getValueIsAdjusting() == false) {
if (list.getSelectedIndex() == -1) {
//No selection: disable delete, up, and down buttons.
deleteButton.setEnabled(false);
upButton.setEnabled(false);
downButton.setEnabled(false);
nameField.setText("");
} else if (list.getSelectedIndices().length > 1) {
//Multiple selection: disable up and down buttons.
deleteButton.setEnabled(true);
upButton.setEnabled(false);
downButton.setEnabled(false);
} else {
//Single selection: permit all operations.
deleteButton.setEnabled(true);
upButton.setEnabled(true);
downButton.setEnabled(true);
nameField.setText(list.getSelectedValue().toString());
}
}
|
|