| |
|
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.
Methode | Beschreibung |
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.
Methode | Beschreibung |
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
|