Erfahren Sie, wie die AWT mit Ihren eigenen Bild Tasten zu erweitern, Javaworld
Man könnte es für selbstverständlich, dass jede neuzeitlichen GUI-Toolkit inhärente Unterstützung für Symbole und Symbol-Tasten, aber nicht so schnell zu übernehmen - Java Abstract Windowing Toolkit (AWT) lebt nicht zu dieser Erwartung auf. Ja, die AWT eine Button-Klasse enthält, sondern weil Knopf durch plattformabhängigen GUI-Komponenten implementiert ist, können Sie nicht in eine Schaltfläche ziehen und erwarten, dass das Bild korrekt angezeigt werden, wenn überhaupt.
Erste Schritte mit dem Image Klasse gestartet
Unser erster Schritt in Richtung auf Bild Tasten schafft, ist eine neue Klasse zu implementieren, die in der Java-Umgebung arbeitet und unterstützt auch die Zeichnung. Um sicherzustellen, dass unsere neue Klasse (was wir nennen
arbeitet) innerhalb der Java-Umgebung, sollten wir es aus einer bestehenden AWT-Komponente Unterklasse. Die AWT enthält zwei Kandidaten -
-- dass die Unterstützung Zeichnung. Obwohl wir entweder Klasse verwenden könnte,
verfügt über zusätzliche Funktionen, die wir so werden wir gehen mit nicht benötigen,
Bestimmen Tastenzustände
Unsere Grafik-Taste muss eine Reihe von verschiedenen Staaten unterstützen: UNBEWAFFNETER, OVER, Bewaffnet, und DEAKTIVIERT. Schauen wir uns die Eigenschaften eines jeden Staates einen Blick darauf werfen.
Wenn der Benutzer nicht mit der Taste in irgendeiner Weise in Wechselwirkung, ist der Knopf in seinem UNBEWAFFNETER Zustand. Nachziehen mit vielen Anwendungen wie Internet Explorer und die neuen Netscape Navigator 4.0 Pre-Release werden wir einen OVER Zustand implementieren, die eine Schaltfläche Highlight werden, wenn der Benutzer die Maus darüber bewegt. Der STREIT Zustand, den wir durch zeigt eine gedrückte Taste darstellen werden, tritt auf, wenn der Benutzer klickt und hält auf einem Knopf. Wenn der Benutzer die Maustaste loslässt, während die Schaltfläche im aktivierten Zustand ist, wird die entsprechende Aktion ausgeführt werden; jedoch kann der Anwender auf den UNBEWAFFNETER Zustand zurückkehren, indem Sie den Mauszeiger von der Schaltfläche zu bewegen, ohne die Maustaste loslassen. Der letzte Zustand ich ist deaktiviert unterstützen, die durch den Aufruf der AWT deaktiviert Funktion durch die Image Programmierschnittstelle implementiert ist. Eine deaktivierte Schaltfläche sollte nicht auf eine Aktion des Benutzers reagieren. Wir werden einen grau-out-Effekt unter Verwendung eine behinderte Taste, um anzuzeigen.
Unsere Grafik-Taste wird nur ein Zustand zu einem Zeitpunkt, unterstützen (a-Taste kann nicht sehr gut jetzt zugleich Bewaffnet und unbewaffnet sein, kann es?). Wir werden die vier Zustände in einem einzigen int darstellen. mit vier Konstanten, wie hier gezeigt:
definieren von Grenzen
Komponente vollständig standardmäßig leer, und es bietet keine eingebaute Unterstützung für einen Rahmen um den rechteckigen Bereich zeichnen sie umfasst.
Derzeit ist die beliebteste Art von Grenze der schattierte 3D-Stil-Grenze. Wir können tatsächlich diese Grenze Stil für zwei unserer Tastenzustände verwenden: Um anzuzeigen, eine Taste unbewaffnet ist, fertigen wir dieses Modell mit dunkler Boden verwenden werden und rechten Rand und leichter oberen und linken Rand; um anzuzeigen, eine Taste scharf geschaltet ist (gedrückt) werden wir dieses Modell auch mit dunkleren oberen und linken Rand und leichter unteren und rechten Kanten verwenden.
Verschiedene Stile für verschiedene Zustände
Zurück in der Image Klasse, eine Schaltfläche muss Variablen für möglicherweise halten, vier verschiedene Grenzen und vier verschiedene Bilder für jede der vier Tastenzustände. Da wir bereits die Zustände als ganze Zahlen 0 bis 3 definiert, können wir diese Werte als Indizes in die folgenden Felder verwenden:
Constructing die Schaltfläche Bild
Wir mit dem ganzen Hintergrund Sachen gemacht, so können wir jetzt zum Kern der Sache kommen - das Erstellen der Image-Taste. Als Anwendungsprogrammierer, erstellen wir ein Bild, um die gleiche Art und Weise wir eine Button-Komponente erstellen - durch den Aufruf
Das sind zwei Konstrukteure beteiligt - eine keine Parameter hat, und der andere nimmt ein Bild als unbewaffnet Bild verwendet werden. Hier sind die Konstrukteure:
Einstellen der Bilder und Grenzen
Um die Bilder Array zu aktualisieren und die Bilder in einen Mediatracker laden, die verwendet wird, starten und das Laden von Bildern in einem Hintergrund-Thread zu verwalten, werden wir ein eigenes Verfahren verwenden,
die durch die aufgerufen wird,