Statische Komponenten

Neben den vielfältigen GUI-Komponenten, die mit dem Benutzer interagieren, bietet JControl/Vole 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 String oder eine Bild-Ressource darstellt. Dabei können verschiedene horizontale Ausrichtungen (links, rechts und zentriert) vorgegeben werden. Das Label sorgt selbständig dafür, dass das enthaltene Objekt nach einer Überdeckung durch eine andere GUI-Komponente neu gezeichnet wird. 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(Object label, int x, int y)Mit diesem Konstruktor lässt sich sehr schnell ein neues Label erstellen. Als Parameter kann entweder eine Bild-Ressource (jcontrol.io.Resource) oder ein String übergeben werden. Die Werte x und y bestimmen die Position des Labels auf dem Display. Die benötigten Ausmaße werden automatisch anhand der übergebenen Ressource berechnet.
Label(Object label, int x, int y, int width, int height, int align)Erzeugt ein neues Label wie mit o.a. Konstruktor, allerdings können hier Breite und Höhe der GUI-Komponente fest vorgegeben werden. Der Parameter align kann die Werte ALIGN_LEFT, ALIGN_RIGHT oder ALIGN_CENTER annehmen.
Label(String label, int x, int y, int align)Dieser spezielle Konstruktor kann herangezogen werden, wenn das Label einen String darstellen soll und eine andere horizontale Ausrichtung als linksbündig verwendet werden soll.
setAlign(int align, boolean revalidate)Ändert die horizontale Ausrichtung des Label-Inhaltes. Ist der Wert von revalidate true, wird die vom Label belegte Fläche vor dem Neuzeichnen gelöscht.
setLabel(Object label, boolean revalidate)Ändert den Inhalt des Labels. Mit dem Parameter revalidate kann die Neuberechnung der bevorzugten Größe erzwungen werden.
Tabelle 7: Methoden der Klasse jcontrol.ui.vole.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. Wie Label sorgt Border selbständig für das Neuzeichnen des Rahmens, wenn er durch eine andere GUI-Komponente überdeckt war.

MethodeBeschreibung
Border(int x, int y, int width, int height)Erzeugt einen neuen Border mit der angegebenen Größe und Position.
Border(String label, int x, int y, int width, int height)Erzeugt einen neuen Border mit der angegebenen Größe und Position sowie der als String übergebenen Bezeichnung.
setLabel(String label)Ändert die Bezeichnung des Rahmens.
setStyle(int m_style)Ändert den Stil des Rahmens. Mögliche Werte sind SIMPLE_BORDER (Standard), ETCHED_BORDER (hervorgehobene Kanten) und ROUND_BORDER (runde Ecken).
Tabelle 8: Methoden der Klasse jcontrol.ui.vole.Border

Das Beispielprogramm VoleLabelBorderExample.java demonstriert die Verwendung von Label und Border. Es ist in dem ZIP-Archiv VoleLabelBorderExample.zip inklusive eines entsprechenden JControl/IDE-Projekts enthalten. Bild 5 zeigt einen Screenshot.

Bild 5: Das VoleLabelBorderExample

1    import java.io.IOException;
2    
3    import jcontrol.io.Resource;
4    import jcontrol.ui.vole.Border;
5    import jcontrol.ui.vole.Frame;
6    import jcontrol.ui.vole.Label;
7    
8    /**
9     * <p>This example demonstrates how to use the
10     * components List and TextArea within the GUI
11     * framework JControl/Vole.
12     * This program needs the image resource
13     * 'mouse.jcif'.</p>
14     *
15     * <p>(C) DOMOLOGIC Home Automation GmbH 2003-2005</p>
16     */
17    public class VoleLabelBorderExample extends Frame {
18      Label imageLabel;
19     
20      /**
21       * Create a few Labels and Borders.
22       */
23      public VoleLabelBorderExample() {
24       
25        // create an image Label
26        try {
27          Resource img = new Resource("mouse.jcif");
28          imageLabel = new Label(img, 5, 10);
29        } catch (IOException e) {}
30       
31        Border b = new Border("Mouse", 0, 0, 50, 60);
32    
33        // add mouse and border to the frame
34        this.add(imageLabel);
35        this.add(b);
36           
37        // now create some text labels with different alignments
38        this.add(new Label("Programming", 60, 15));
39        this.add(new Label("with VOLE", 60, 25, 60, 10,
40                           Label.ALIGN_CENTER));
41        this.add(new Label("is really", 60, 35));
42        this.add(new Label("simple!", 60, 45, 60, 10,
43                           Label.ALIGN_RIGHT));
44       
45        // at last, add a 2nd border
46        this.add(new Border("Information", 52, 0, 75, 60));
47      }
48    
49    
50      /**
51       * Instantiate and show the VoleLabelBorderExample
52       */
53      public static void main(String[] args) {
54        new VoleLabelBorderExample().show();
55      }
56    }
Listing 5: VoleLabelBorderExample.java