DigitalMeter und SevenSegmentMeter

Die beiden UI-Komponenten DigitalMeter und SevenSegmentMeter dienen der alphanumerischen Darstellung von Messwerten. Sie unterscheiden sich hauptsächlich in der Art der Darstellung voneinander: Während beim DigitalMeter benutzerspezifische Schriftarten (Fonts) eingesetzt werden können, zeichnet SevenSegmentMeter die Ziffern als Polygone auf das Display, die dem Erscheinungsbild einer (LED-)Siebensegmentanzeige ähneln.

Das SevenSegmentMeter ist -- bis zu einer gewissen Mindestgröße -- frei skalierbar. Die Größe des DigitalMeter hängt von der eingestellten Schriftart ab (Methode setFont(Resource font)). Neben den Konstruktoren, die in Tabelle 2 aufgeführt sind, spielt bei beiden Komponenten im Wesentlichen nur die Methode setValue(int value) eine Rolle, mit der der aktuell anzuzeigende Messwert übergeben werden kann.

MethodeBeschreibung
DigitalMeter(int x, int y, int digits, int decimals)Erstellt ein neues DigitalMeter an der angegebenen Position. Der Parameter digits bestimmt die Anzahl der angezeigten Dezimalziffern. Breite und Höhe der GUI-Komponente ergeben sich aus der Anzahl Ziffern und der mittels setFont eingestellten Schriftart. decimals gibt die Anzahl der Nachkommastellen an, die in digits enthalten sind (an entsprechender Stelle wird ein Komma eingefügt).
SevenSegmentMeter(int x, int y, int width, int height, int digits, int decimals)Dieser Konstruktor erzeugt ein neues SevenSegmentMeter mit den angebenen Koordinaten und Maßen. Der Parameter digits gibt die gewünschte Anzahl Dezimalstellen an. decimals gibt die Anzahl der Nachkommastellen an, die in digits enthalten sind (an entsprechender Stelle wird ein Komma eingefügt).
setValue(int value)Übergibt einen neuen Messwert an das SevenSegmentMeter, bzw. DigitalMeter, welches daraufhin aktualisiert wird.
Tabelle 2: Methoden der Klassen jcontrol.ui.vole.meter.SevenSegmentMeter und DigitalMeter

Der in Bild 2 dargestellte Screenshot zeigt das im Folgenden abgedruckte Beispielprogramm VoleDigitalMeterExample, welches ein DigitalMeter und ein SevenSegmentMeter instantiiert und auf dem Display darstellt.

Bild 2: Das VoleDigitalMeterExample

1    import java.io.IOException;
2    
3    import jcontrol.io.Resource;
4    import jcontrol.lang.Math;
5    import jcontrol.lang.ThreadExt;
6    import jcontrol.ui.vole.Border;
7    import jcontrol.ui.vole.Frame;
8    import jcontrol.ui.vole.meter.DigitalMeter;
9    import jcontrol.ui.vole.meter.SevenSegmentMeter;
10    
11    /**
12     * <p>This example demonstrates how to use the
13     * component DigitalMeter within the GUI framework
14     * JControl/Vole.
15     * This example needs the font resource
16     * "arial24.jcfd".</p>
17     *
18     * <p>(C) DOMOLOGIC Home Automation GmbH 2003-2005</p>
19     */
20    public class VoleDigitalMeterExample extends Frame {
21     
22      public VoleDigitalMeterExample() {
23        // create the DigitalMeter
24        DigitalMeter dm = new DigitalMeter(13, 20, 3, 1);
25    
26        // set the Font of the DigitalMeter
27        try {
28          dm.setFont(new Resource("arial24.jcfd"));
29        } catch (IOException e) {}
30    
31        // add the DigitalMeter to the Frame
32        this.add(dm);
33       
34        // create the LCDMeter
35        SevenSegmentMeter sm = new SevenSegmentMeter(70, 10, 50,
36                                                     50, 2, 0);
37        this.add(sm);
38       
39        // make some pretty borders
40        this.add(new Border("DigitalMeter", 0, 0, 63, 60));
41        this.add(new Border("SevenSegment", 64, 0, 63, 60));
42       
43        // make the frame visible
44        show();
45       
46       
47        // produce some random values
48        for (;;) {
49          dm.setValue(Math.rnd(2000)-1000);
50          sm.setValue(Math.rnd(150)-50);
51          try{ ThreadExt.sleep(1000); }catch(InterruptedException e){}
52        }
53      }
54    
55      // start the demonstration
56      public static void main(String[] args) {
57        new VoleDigitalMeterExample();
58      }
59    }
Listing 2: VoleDigitalMeterExample.java