/******************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Programm zeigt die Verwendung von ScrollPanes. */ /******************************************************/ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; class ScrollDemo extends JFrame { // Liste mit den Strings, die in ihr enthalten sein sollen: private JList liste; String[] st = {"Item 1","Item 2","Item 3","Item 4","Item 5","Item 6","Item 7","Item 8","Quit"}; // ScrollPane zur Aufnahme der Liste: private JScrollPane scrollp; // Textfeld, in dem angezeigt wird, welches Listenelement ausgewaehlt ist: private JTextField textListe; // Button: nach Druecken von butLoesch wird die Selektion geloescht private JButton butLoesch; // Konstruktor: Erzeugung der Grafik-Oberflaeche ScrollDemo(String s) { // Erzeugen und Positionieren des Fensterrahmens super(s); setLocation(20,20); // Box fuer Liste, Button und Ausgabefeld: Box b = Box.createVerticalBox(); getContentPane().add(b); // Überschrift: JLabel lab = new JLabel("Auswahlliste:"); lab.setFont(new Font("Arial",Font.BOLD,22)); lab.setForeground(Color.black); b.add(lab); b.add(Box.createVerticalStrut(10)); // Erzeugung der Liste und der zugehoerigen ScrollPane: liste = new JList(st); scrollp = new JScrollPane(liste); // Festlegung der Farben: liste.setFont(new Font("Arial",Font.BOLD,22)); liste.setForeground(Color.blue); liste.setSelectionForeground(Color.white); liste.setSelectionBackground(Color.blue); // Festlegung des Selection Modes der Liste: // Es koennen beliebig viele Listenelemente in beliebiger Kombination ausgewaehlt werden // Alternativen: SINGLE_INTERVAL_SELECTION, SINGLE_SELECTION liste.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // Vorauswahl: erstes Element liste.setSelectedIndex(0); // Listener fuer Reaktion bei uenderung der Auswahl hinzufuegen: liste.addListSelectionListener(new AuswahlListener()); // Einfuegen der Liste ins Fenster: Box b2 = Box.createHorizontalBox(); b2.add(Box.createHorizontalGlue()); b2.add(scrollp); b2.add(Box.createHorizontalGlue()); b.add(b2); b.add(Box.createVerticalStrut(20)); // Button, mit dem man die Selektion loescht: butLoesch = new JButton("Selektion loeschen"); butLoesch.setFont(new Font("Arial",Font.BOLD,22)); butLoesch.setForeground(Color.black); b.add(butLoesch); butLoesch.addActionListener(new LoeschListener()); b.add(Box.createVerticalStrut(20)); // Textkomponente zur Anzeige der ausgewaehlten Listeneintraege: lab = new JLabel("ausgewaehlte Items:"); lab.setFont(new Font("Arial",Font.BOLD,22)); lab.setForeground(Color.black); b.add(lab); textListe = new JTextField(); textListe.setFont(new Font("Arial",Font.BOLD,22)); textListe.setForeground(Color.black); b.add(textListe); // Komponenten anordnen und sichtbar machen: setLocation(100,100); setSize(new Dimension(280,320)); setVisible(true); } // Aktionen bei Aenderungen der Listenauswahl: class AuswahlListener implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) { if (liste.isSelectedIndex(8)) // Aktion, wenn Quit ausgewaehlt: System.exit(1); StringBuffer st = new StringBuffer(); // in st: Zusammenstellung der Angaben, welche // Elemente ausgewaehlt sind ... // // (alternativ kann auch getSelectedIndices() verwendet werden: // liefert einen Array mit den Indizes der ausgewaehlten Eintraege zurueck. // Oder getSelectedValues(): liefert Array mit den ausgewaehlten Eintraegen.) if (liste.isSelectionEmpty()) st.append("keines"); else for (int i=0;i<8;i++) if (liste.isSelectedIndex(i)) st.append(Integer.toString(i+1)+" "); // ... und Ausgabe: textListe.setText(st.toString()); } } // Aktionen bei Loeschen der Selektion: class LoeschListener implements ActionListener { public void actionPerformed(ActionEvent e) { liste.clearSelection(); } } } // Hauptprogramm public class Scroll { public static void main(String args[]) { // Hauptprogramm: Erzeugung der Oberflaeche new ScrollDemo("ScrollBar"); } }