/* * ColorList.java demos a GridBagLayout with ListSelectionListeners for /* twO buttons. */ import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; public class ColorList extends JPanel implements ListSelectionListener{ private JList list; private DefaultListModel listModel; private JButton SetForegr, SetBackgr, b1; public ColorList(){ this.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.HORIZONTAL; SetForegr = new JButton("Left Button"); c.insets = new Insets(10,10,10,5); //TLBR c.gridx = 1; c.gridwidth = 3; c.gridy = 1; this.add(SetForegr, c); SetBackgr = new JButton("Right Button"); c.insets = new Insets(10,5,10,10); c.gridx = 5; c.gridy = 1; this.add(SetBackgr, c); // Disable buttons until a color has been selected SetForegr.setEnabled(false); SetBackgr.setEnabled(false); b1 = new JButton("Example Button"); b1.setActionCommand("EX"); b1.addActionListener(new ColorListener()); c.insets = new Insets(10,10,10,5); c.gridx = 1; c.gridy = 3; this.add(b1, c); c.insets = new Insets(10,5,10,10); listModel = new DefaultListModel(); listModel.addElement("A"); listModel.addElement("B"); listModel.addElement("C"); listModel.addElement("D"); listModel.addElement("E"); //Create the list and put it in a scroll pane. list = new JList(listModel); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); SetForegr.setEnabled(false); SetBackgr.setEnabled(false); list.addListSelectionListener(this); list.setVisibleRowCount(4); JScrollPane listScrollPane = new JScrollPane(list); c.insets = new Insets(10,10,10,10); //padding around list c.gridx = 6; c.gridy = 3; this.add(listScrollPane, c); } class ColorListener implements ActionListener { public void actionPerformed(ActionEvent e) { //This method can be called only if //there's a valid selection //so go ahead and remove whatever's selected. int index = list.getSelectedIndex(); System.out.println(index); } } //This method is required by ListSelectionListener. public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting() == false) { //Selection, enable the fire button. SetBackgr.setEnabled(true); SetForegr.setEnabled(true); } } }