Statische Komponenten

Neben den vielfältigen GUI-Komponenten, die mit dem Benutzer interagieren, bietet JControl/Wombat auch noch einige andere statische Komponenten, die zur Darstellung von Texten, Bildern oder grafischen Layout-Elementen verwendet werden können.


Label

Die Klasse Label stellt eine GUI-Komponente zur Verfügung, die einen mehrzeiligen Text oder eine Bild-Ressource darstellt. Dabei können verschiedene horizontale Ausrichtungen (links, rechts und zentriert) vorgegeben werden. Mit Labels lassen sich Texte und Bilder ohne großen Programmieraufwand komfortabel positionieren und ausrichten. In der Tabelle 7 sind die wichtigsten Methoden von Label aufgeführt.

MethodeBeschreibung
Label(String text, int x, int y)Erstellt ein Label an Position x,y mit dem angegebenen Text. Die Größe der Komponente wird durch den Text in Verbindung mit der verwendeten Schriftart festgelegt. Ein späteres Verändern des Textes oder der Schriftart kann eine Größenänderung des Labels nach sich ziehen.
Label(Resource image, int x, int y)Erstellt ein Label an Position x,y mit dem angegebenen Bild. Die Größe der Komponente wird durch die Größe des Bildes bestimmt. Ein Austauschen des Bildes kann eine Größenänderung des Labels nach sich ziehen.
Label(String text, int x, int y, int width, int height, int style) {Erzeugt ein neues Label wie mit o.a. Konstruktor, allerdings können hier Breite und Höhe des Labels fest vorgegeben werden (für Werte >0), d.h. auch ein nachträgliches Ändern der Beschriftung ändert die Größe des Labels nicht. Der Parameter style kann einen der konstanten Werte STYLE_ALIGN_LEFT, STYLE_ALIGN_CENTER oder STYLE_ALIGN_RIGHT annehmen. Dieser Wert kann optional mit den Werten STYLE_SHOW_BORDER und STYLE_DRAW_INVERSE oder STYLE_DRAW_NORMAL durch Anwenden der OR-Verknüpfung kombiniert werden.
Label(Resource image, int x, int y, int width, int height, int style)Erzeugt ein neues Label wie oben, nur mit einem Bild anstatt eines Textes.
setText(String text)Ersetzt den Inhalt des Labels mit dem angegebenen Text.
setImage(Resource image)Ändert den Inhalt des Labels mit dem angegebenen Bild.
setStyle(int style)Ändert den Stil des Label. Der Parameter entspricht der Benutzung im Konstruktor.
Tabelle 7: Methoden der Klasse jcontrol.ui.wombat.Label


Border

Mit der Klasse Border, die auch schon in den vorhergehenden Beispielprogrammen zum Einsatz kam, können verschiedene Rahmentypen auf das Display gezeichnet werden. Die Rahmen sind transparent und überdecken somit nicht schon vorhandene UI-Komponenten. Wahlweise kann bei der Konstruktion ein String übergeben werden, der am linken oberen Rand des Rahmens dargestellt wird.

MethodeBeschreibung
Border(String label, int x, int y, int width, int height, int style)Erzeugt eine neue Border mit der angegebenen Beschriftung, Position und Größe. Für den style-Parameter stehen folgende Kostanten zur Auswahl: STYLE_SIMPLE_BORDER, STYLE_ROUND_BORDER und STYLE_ETCHED_BORDER.
setText(String text)Ändert die Beschriftung des Rahmens.
Tabelle 8: Methoden der Klasse jcontrol.ui.wombat.Border

Das Beispielprogramm WombatLabelBorderExample.java demonstriert die Verwendung von Label und Border. Es befindet sich im Verzeichnis "demos/cobra5329/WombatTutorial/WombatLabelBorderExample" Ihrer JControl/IDE-Installation (unter Windows "C:\Programme\JControl\demos\cobra5329\WombatTutorial\WombatLabelBorderExample"). Bild 5 zeigt einen Screenshot.

Bild 5: Das WombatLabelBorderExample

1    /**
2     * <p>This example demonstrates how to use the
3     * components Label and Border within the GUI
4     * framework JControl/Wombat.
5     * This program needs the image resource
6     * 'smile.jcif'.</p>
7     *
8     * <p>(C) DOMOLOGIC Home Automation GmbH 2007/p>
9     */
10    import jcontrol.ui.wombat.Frame;
11    import jcontrol.ui.wombat.Container;
12    import jcontrol.ui.wombat.Border;
13    import jcontrol.ui.wombat.Label;
14    import jcontrol.io.Resource;
15    import java.io.IOException;
16    import jcontrol.graphics.Color;
17    
18    public class WombatLabelBorderExample extends Frame 
19    
20        /**
21         * Constructor WombatLabelBorderExample
22         */
23        public WombatLabelBorderExample() {
24            // create a container for the content of this frame
25            Container content = new Container();
26           
27            // create some borders of different kind
28            Border simpleBorder = new Border("Simple Border", 70, 30, 160, 50,
29                Border.STYLE_SIMPLE_BORDER);
30            content.add(simpleBorder);
31            Border roundBorder = new Border("Round Border", 70, 80, 160, 50,
32                Border.STYLE_ROUND_BORDER);
33            content.add(roundBorder);
34            Border etchedBorder = new Border("Etched Border", 70, 130, 160, 50,
35                Border.STYLE_ETCHED_BORDER);
36            content.add(etchedBorder);
37           
38            // create some labels of different kind
39            try {
40                Label label1 = new Label(new Resource("smile.jcif"), 140, 47, 0, 0,
41                    Label.STYLE_ALIGN_LEFT);               
42                content.add(label1);
43            } catch(IOException ioe) {
44                // must be caught as the Resource-constructor may throw this exception
45            }      
46            Label label2 = new Label("Hello World!", 120, 97, 60, 20,
47                Label.STYLE_ALIGN_CENTER);
48            label2.setForegroundColor(Color.WHITE);
49            label2.setBackgroundColor(Color.RED);
50            content.add(label2);
51            Label label3 = new Label("Hello World!", 120, 147, 60, 20,
52                Label.STYLE_ALIGN_CENTER|Label.STYLE_SHOW_BORDER);
53            label3.setBackgroundColor(Color.WHITE);    
54            content.add(label3);
55           
56            // set the content to this frame
57            setContent(content);
58            // finally, make the frame visible     
59            setVisible(true);
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 WombatLabelBorderExample();
70        }
71    }
Listing 5: WombatLabelBorderExample.java