ListBox und TextViewer


ListBox

Die GUI-Komponente ListBox zeigt eine Liste von Strings an und ermöglicht die grafische Auswahl eines Eintrags. Enthält die Liste mehr Einträge als auf Grund ihrer Größe gleichzeitig darstellbar sind, kann am rechten Rand eine ScrollBar eingeblendet werden. Der momentan durch den Benutzer ausgewählte Eintrag wird durch die Invertierung der entsprechenden Zeile hervorgehoben. Die GUI-Komponente ListBox "feuert" ActionEvents vom Typ ITEM_SELECTED. Die folgenden Methoden sind zur Erstellung einer Liste verfügbar:

MethodeBeschreibung
ListBox(String[] items, int x, int y, int width, int height, int style)Erzeugt eine neue GUI-Komponente ListBox mit der angegebenen Position und Größe. Der Parameter items enthält eine initiale Belegung der ListBox. Der Parameter style bestimmt das Aussehen und Verhalten. Hierfür besitzt die Klasse ListBox die Konstanten STYLE_NONE, STYLE_SHOW_BORDER, STYLE_SHOW_SCROLLBAR, STYLE_ALIGN_TOP und STYLE_ALIGN_CENTER, welche einzeln oder in sinnvoller Kombination durch | verknüpft angegeben werden.
ListBox(int x, int y, int width, int height, int style)Dieser Konstruktor arbeitet genau wie sein o.a. Pendant mit dem Unterschied, daß die ListBox leer bleibt.
add(String item)Fügt der Liste einen neuen Eintrag hinzu.
remove(String item)Entfernt einen Eintrag aus der Liste.
Tabelle 5: Methoden der Klasse jcontrol.ui.wombat.ListBox


TextViewer

Mit dem TextViewer ist es möglich, längere Texte mit Scroll-Funktionalität anzuzeigen. Der Inhalt der TextViewer kann entweder statisch im Konstruktor oder dynamisch mit der set-Methode übergeben werden. Die Methode add fügt neuen Text an den bereits vorhandenen an. Tabelle 6 fasst die Methoden der TextViewer zusammen:

MethodeBeschreibung
TextViewer(int x, int y, int width, int height, int style)Erzeugt eine neue TextViewer mit der angegebenen Position und Größe. Der Parameter style bestimmt das Aussehen und Verhalten. Hierfür besitzt die Klasse TextViewer die Konstanten STYLE_NONE, STYLE_SHOW_BORDER, STYLE_SHOW_SCROLLBAR.
TextViewer(String text, int x, int y, int width, int height, int style)Bei diesem Konstruktor kann neben den o.g. Parametern noch ein String mit dem initialen Textinhalt dem TextViewer übergeben werden.
setText(String text)Weist dem TextViewer den angegebenen Text zu. Eventuell bereits vorhandener Text wird verworfen.
add(String text)Konkateniert den angegeben String an den eventuell bereits im TextViewer enhaltenen Text. Enthält der TextViewer noch keinen Text ist diese Methode identisch mit setText(String text).
Tabelle 6: Methoden der Klasse jcontrol.ui.wombat.TextViewer

Im Folgenden ist ein Quelltext-Beispiel aufgeführt, dass sowohl ein ListBox-Objekt als auch eine TextViewer anlegt, mit einigen Einträgen füllt und auf dem Display darstellt. Das Projekt finden Sie im Installationsverzeichnis der JControl/IDE unter "demos/cobra5329/WombatTutorial/WombatListTextviewerExample" (unter Windows "C:\Programme\JControl\demos\cobra5329\WombatTutorial\WombatListTextviewerExample"). Bild 4 zeigt einen Screenshot des Programms.

Bild 4: Das WombatListTextviewerExample

1    /**
2     * <p>This example demonstrates how to use the
3     * components ListBox and TextViewer within the GUI
4     * framework JControl/Wombat.</p>
5     *
6     * <p>(C) DOMOLOGIC Home Automation GmbH 2007</p>
7     */
8    import jcontrol.ui.wombat.Frame;
9    import jcontrol.ui.wombat.Container;
10    import jcontrol.ui.wombat.event.ActionListener;
11    import jcontrol.ui.wombat.TextViewer;
12    import jcontrol.io.Resource;
13    import java.io.IOException;
14    import jcontrol.ui.wombat.ListBox;
15    import jcontrol.ui.wombat.event.ActionEvent;
16    
17    
18    public class WombatListTextviewerExample extends Frame implements ActionListener  {
19        /**
20         * Constructor WombatListTextviewerExample
21         */
22        public WombatListTextviewerExample() {
23            // create a container for the content of this frame
24            Container content = new Container();
25            try {
26                // set a larger Font to the content, all components in the
27              // content will get this font, too
28                content.setFont(new Resource("Arial.jcfd"));
29            } catch(IOException ioe) {}    
30           
31            // create a TextViewer
32            TextViewer textViewer = new TextViewer(
33                "The TextViewer can show any text you want.\n" +
34                "Line-breaks are performed autmatically.",
35                70, 40, 180, 70, TextViewer.STYLE_SHOW_SCROLLBAR);
36            content.add(textViewer);
37           
38            // create a ListBox
39            ListBox listBox = new ListBox(new String[]{
40                "North", "Eath", "South", "West",
41                "North-Eath", "South-West", "South-Eath", "North-West"},
42                70, 110, 180, 70, ListBox.STYLE_SHOW_SCROLLBAR);
43            content.add(listBox);
44            listBox.setActionListener(this);
45           
46            // set the content to this frame
47            setContent(content);
48            // finally, make the frame visible     
49            setVisible(true);
50        }
51    
52        /**
53         * This method is called every time an item in the listbox declared
54         * above is selected be the user.
55         *
56         * @param e the ActionEvent fired by the listbox
57         */
58        public void onActionEvent(ActionEvent e) {
59            // add some code if you want to
60        }
61    
62        /**
63         * The main method.
64         *
65         * @param args
66         *        The main arguments
67         */
68        public static void main(String[] args) {
69            new WombatListTextviewerExample();
70        }
71    }
Listing 4: WombatListTextviewerExample.java