//: c13:List.java // Przykład z książki 'Thinking in Java, wydanie 2.', autor - Bruce Eckel // www.BruceEckel.com // Patrz informacje o prawach autorskich podane w pliku CopyRight.txt. // <applet code=List width=250 // height=375> </applet> import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import javax.swing.border.*; import com.bruceeckel.swing.*; public class List extends JApplet { String[] flavors = { "Czekoladowe", "Truskawkowe", "Waniliowe", "Miętowe", "Mocca", "Rumowe", "Karmelowe", "Bakaliowe" }; DefaultListModel lItems=new DefaultListModel(); JList lst = new JList(lItems); JTextArea t = new JTextArea(flavors.length,20); JButton b = new JButton("Dodaj element"); ActionListener bl = new ActionListener() { public void actionPerformed(ActionEvent e) { if(count < flavors.length) { lItems.add(0, flavors[count++]); } else { // Wyłącz ponieważ nie ma już więcej // smaków do dodania do listy. b.setEnabled(false); } } }; ListSelectionListener ll = new ListSelectionListener() { public void valueChanged( ListSelectionEvent e) { t.setText(""); Object[] items=lst.getSelectedValues(); for(int i = 0; i < items.length; i++) t.append(items[i] + "\n"); } }; int count = 0; public void init() { Container cp = getContentPane(); t.setEditable(false); cp.setLayout(new FlowLayout()); // Ustaw komponentom ramki. Border brd = BorderFactory.createMatteBorder( 1, 1, 2, 2, Color.black); lst.setBorder(brd); t.setBorder(brd); // Dodaj do listy cztery pierwsze elementy. for(int i = 0; i < 4; i++) lItems.addElement(flavors[count++]); // Dodaj elementy do panelu cp.add(t); cp.add(lst); cp.add(b); // Zarejestruj odbiorców zdarzeń. lst.addListSelectionListener(ll); b.addActionListener(bl); } public static void main(String[] args) { Console.run(new List(), 250, 375); } } ///:~