Thermometer

Für die Anzeige von Temperaturwerten ist das Thermometer besonders gut geeignet. Die Darstellung als Quecksilberthermometer sorgt für eine intuitive Interpretation als Temperaturanzeige. Im Gegensatz hierzu steht z.B. das AnalogMeter, bei welchem erst der String unit Aufschluss über den angezeigten Wert gibt.

Neben den Standardmethoden wie setValue oder setBounds bietet das Thermometer noch einige spezielle Konfigurationsoptionen an. Diese sind in Tabelle 4 aufgeführt.

MethodeBeschreibung
Thermometer(int x, int y, int width, int height, int min, int max)Erstellt ein neues Thermometer mit der spezifizierten Größe an den angegebenen Koordinaten. Die Parameter min und max geben den Wertebereich vor.
setCaption(String captionMin, String captionMax)Ändert die Beschriftung des Thermometers. Hier können Strings für den minimalen und den maximalen Messwert angegeben werden, diese werden rechts unten und rechts oben der Skala gezeichnet.
setNumericDisplay(int digits, int decimals, String unit)Mittels dieser Methode kann die alphanumerische Messwertanzeige konfiguriert werden. Der Parameter digits definiert die Anzahl der anzuzeigenden Stellen. Der Parameter decimals bestimmt, wieviele Nachkommanstellen angezeigt werden sollen (diese sind im Wert von digits enthalten). Beispiel: digits=4 und decimals=3 ergibt die Zahlendarstellung: x,xxx. Im Fall decimals=0 wird kein Komma eingefügt. Der String unit schließlich gibt die Einheit der Messwerte an (z.B. "V").
setValue(int value)Übergibt einen neuen Messwert an das Thermometer, welches daraufhin aktualisiert wird. Liegt der Wert von value außerhalb des Wertebereichs, so wird er entsprechend durch den minimal, bzw. maximal anzeigbaren Wert ersetzt.
Tabelle 4: Methoden der Klasse jcontrol.ui.vole.meter.Thermometer

Im Folgenden ist das Beispielprogramm VoleThermometerExample abgedruckt. Wenn Sie das Programm aus der ZIP-Datei VoleBarMeterExample.zip in Ihre JControl/IDE laden und dann den Simulator starten, müsste sich ein Bild ähnlich Abbildung 4 ergeben.

Bild 4: Das VoleThermometerExample

1    import jcontrol.lang.Math;
2    import jcontrol.lang.ThreadExt;
3    import jcontrol.ui.vole.Border;
4    import jcontrol.ui.vole.Container;
5    import jcontrol.ui.vole.Frame;
6    import jcontrol.ui.vole.Label;
7    import jcontrol.ui.vole.meter.Thermometer;
8    
9    /**
10     * <p>This example demonstrates how to use the
11     * component Thermometer within the GUI framework
12     * JControl/Vole.</p>
13     *
14     * <p>(C) DOMOLOGIC Home Automation GmbH 2003-2005</p>
15     */
16    public class VoleThermometerExample extends Frame {
17      Thermometer tm1, tm2;
18     
19      /**
20       * Create three AnalogMeters with different configurations.
21       */
22      public VoleThermometerExample() {
23        Container container = new Container();
24        jcontrol.io.Backlight.setBrightness(255);
25       
26        // create the first Thermometer
27        //
28        // NOTE: The String "\u00b0" hereby represents the
29        //       UTF8 version of the 'degree' character
30        tm1 = new Thermometer(8, 10, 50, 45, 0, 400);
31        tm1.setNumericDisplay(5, 1, "\u00b0C")
32        tm1.setCaption("0\u00b0C", "+40\u00b0C");
33    
34        container.add(tm1);
35        container.add(new Label("Inside Temp.", 8, 55, 50, 8,
36                                Label.ALIGN_CENTER));
37     
38        // create the second Thermometer
39        //
40        // NOTE: The String "\u00b0" hereby represents the
41        //       UTF8 version of the 'degree' character
42        tm2 = new Thermometer(68, 10, 50, 45, -300, 500);
43        tm2.setNumericDisplay(5, 1, "\u00b0C");
44        tm2.setCaption("-30\u00b0C", "+50\u00b0C");
45       
46        container.add(tm2);
47        container.add(new Label("Outside Temp.", 68, 55, 50, 8,
48                                Label.ALIGN_CENTER));
49       
50        // add a border
51        container.add(new Border("Thermometers", 0, 0, 128, 64));
52       
53        // add the container to the frame
54        this.add(container);
55       
56        // make us visible
57        show();   
58       
59        // create some random values
60        for (;;) {
61          tm1.setValue(Math.rnd(400));
62          tm2.setValue(Math.rnd(800)-300);
63         
64          try {
65            ThreadExt.sleep(1000);
66          } catch (InterruptedException e) {}
67        }   
68      }
69    
70      // Instantiate and show the VoleAnalogMeterExample
71      public static void main(String[] args) {
72        new VoleThermometerExample();
73      }
74    }
Listing 4: VoleThermometerExample.java

Anmerkung: Die Zeichenkette "\u00b0C" in Zeile 42 steht für "°C". Bei der Sequenz "\u00b0" handelt es sich um die hexadezimale UTF-8-Schreibweise des Grad-Zeichens. Wir verwenden diese, weil manche Editoren das (Sonder-)Zeichen "°" beim Speichern leider modifizieren und es dann auf dem JControl-Gerät nicht mehr richtig dargestellt werden kann.