From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100178.html | 470 +++++++++++++++++++++ 1 file changed, 470 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100178.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100178.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100178.html b/Master/Reference Architectures and Patterns/hjp5/html/k100178.html new file mode 100644 index 0000000..15eaed0 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100178.html @@ -0,0 +1,470 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 27 - Fenster +
+
+ + + + +

27.5 Fensterelemente

+
+ +
+ +

+Neben den visuellen Eigenschaften eines Fensters gibt es noch eine +Reihe weiterer Elemente, die einem Fenster zugeordnet werden können. +Hierzu zählen die Titelleiste, +das Menü, ein Icon, +ein Mauscursor, eine bestimmte Vorder- +und Hintergrundfarbe +und ein Standard-Font zur Ausgabe von +Schriften. Bis auf die Definition und die Zuordnung von Menüs, +die in Kapitel 30 erläutert +werden, soll der Umgang mit diesen Fensterelementen in den folgenden +Unterabschnitten erklärt werden. + + + + +

27.5.1 Der Fenstertitel

+ +

+Die Titelleiste eines Fensters läßt sich in den Klassen +Frame +und Dialog +mit Hilfe der Methode setTitle +verändern: +

+ + + + + +
+ +
+public void setTitle(String title)
+
+public String getTitle()
+
+
+
+java.awt.Frame
+ +

+Ein Aufruf dieser Methode ändert die Beschriftung der Titelleiste +in den als String +übergebenen Parameter title. +Mit der Methode getTitle +kann die Titelleiste abgefragt werden. + + + + +

27.5.2 Das Icon des Fensters

+ +

+Wenn ein Fenster unter Windows minimiert wird, zeigt es ein Icon an. +Mit einem Doppelklick auf das Icon kann die ursprüngliche Größe +des Fensters wiederhergestellt werden. Mit Hilfe der Methode setIconImage +der Klasse Frame +kann dem Fenster ein Icon zugeordnet werden, das beim Minimieren angezeigt +wird: +

+ + + + + +
+ +
+public void setIconImage(Image image)
+
+
+
+java.awt.Frame
+ +

+Beim Design des Icons steht man nun vor dem Konflikt, entscheiden +zu müssen, in welcher Größe das Icon entworfen werden +soll. Ein Windows-Programm hat meist ein Haupticon in der Größe +32*32 Pixel und ein kleineres Icon mit 16*16 Pixeln. Beide werden +an unterschiedlichen Stellen im Programm benötigt. Das JDK ist +glücklicherweise in der Lage, die übergebenen Images so +zu skalieren, dass sie die jeweils benötigte Größe +annehmen. Die Ergebnisse sind im Falle des großen Icons durchaus +brauchbar (so hat z.B. das in Abbildung 27.3 +gezeigte und in Listing 27.4 +verwendete Icon eine Originalgröße von 60*56 Pixeln), im +Falle des kleinen Icons sind die Ergebnisse in Prä-1.2-JDKs jedoch +nicht so befriedigend. Hier scheint die Skalierungsroutine lediglich +ein schwarz-weißes Ergebnis zu erzeugen. +

+ + +

+ +

+Abbildung 27.3: Das Beispiel-Icon

+

+ + + + + + + + + +
+ +

+Leider unterstützen nicht alle Plattformen, auf denen Java läuft, +die Darstellung eines Icons als Symbol für ein minimiertes Fenster. +Daher kann setIconImage +nicht als vollständig portabel angesehen werden.

+ + + + +
 Hinweis 
+
+ + + + +

27.5.3 Der Mauscursor

+ +

+Zur Darstellung des Mauscursors bietet die Klasse Component +eine Methode setCursor, +mit der ein Cursor-Objekt +vorgegeben werden kann: + +

+

+ + + + + +
+ +
+public void setCursor(Cursor cursor)
+
+
+
+java.awt.Component
+ +

+Die Klasse Cursor +besitzt einen Konstruktor, der als einziges Argument eine ganzzahlige +Konstante erwartet, mit der der gewünschte Cursor aus der Liste +der vordefinierten Cursortypen ausgewählt werden kann. Tabelle 27.1 +gibt eine Auswahl der verfügbaren Cursortypen an. +

+ + + + + + + + + + + +
+ +

+Das freie Erstellen benutzerdefinierter Cursortypen wird seit dem +JDK 1.2 unterstützt. Dazu gibt es in der Klasse Toolkit +die Methoden createCustomCursor, +getBestCursorSize +und getMaximumCursorColors. +Wir wollen darauf nicht näher eingehen.

+ + + + +
 JDK1.1-6.0 
+
+ +

+ + + + + + + + + + + + + + + + + + + + +
Konstante aus FrameCursorform
Cursor.CROSSHAIR_CURSORFadenkreuz
Cursor.DEFAULT_CURSORStandardpfeil
Cursor.MOVE_CURSORVierfachpfeil
Cursor.TEXT_CURSORSenkrechter Strich
Cursor.WAIT_CURSOREieruhr
+

+Tabelle 27.1: Konstanten zur Cursorauswahl

+ + + + +

27.5.4 Die Vorder- und Hintergrundfarbe

+ +

+Die Hintergrundfarbe eines Fensters wird vor dem Aufruf von paint +verwendet, um den Hintergrund des Fensters zu löschen. Das Löschen +kann man sich so vorstellen, dass ein gefülltes Rechteck in der +Größe der Client-Area in der aktuellen Hintergrundfarbe +gezeichnet wird. Die Vordergrundfarbe dient zur Ausgabe von Grafik- +und Textobjekten, wenn im Grafik-Kontext keine andere Farbe gesetzt +wird. Wird die Einstellung nicht geändert, werden in beiden Fällen +die unter Windows eingestellten Standardfarben verwendet. Mit Hilfe +der Methoden setForeground +und setBackground +der Klasse Component +können Vorder- und Hintergrundfarbe eines Fensters geändert +werden: +

+ + + + + +
+ +
+public void setBackground(Color c)
+
+public void setForeground(Color c)
+
+
+
+java.awt.Component
+ + + + +

27.5.5 Der Standard-Font

+ +

+Ein Fenster hat einen Standard-Font, der zur Ausgabe von Schrift verwendet +wird, wenn nicht im Grafik-Kontext ein anderer Font ausgewählt +wird. Die Verwendung eines Standard-Fonts macht Sinn, wenn nur ein +Font verwendet werden soll, um Text darzustellen. Dadurch ergeben +sich Laufzeitvorteile gegenüber der separaten Auswahl eines Fonts +bei jedem Aufruf von paint. +Der Standard-Font eines Fensters wird mit der Methode setFont +der Klasse Component +eingestellt: +

+ + + + + +
+ +
+public void setFont(Font f)
+
+
+
+java.awt.Component
+ +

+Das folgende Beispielprogramm erzeugt ein Fenster mit einer Titelleiste, +gesetzter Vorder- und Hintergrundfarbe und der Eieruhr als Cursor. +Zusätzlich besitzt das Programm das in Abbildung 27.3 +gezeigte Icon, das beim Minimieren des Programms und in der Taskleiste +angezeigt wird. + + +

+ + + + + +
+ +
+001 /* Listing2704.java */
+002 
+003 import java.awt.*;
+004 import java.awt.event.*;
+005 
+006 public class Listing2704
+007 extends Frame
+008 {
+009   public static void main(String[] args)
+010   {
+011     Listing2704 wnd = new Listing2704();
+012     wnd.setSize(300,200);
+013     wnd.setLocation(50,50);
+014     wnd.setVisible(true);
+015   }
+016 
+017   public Listing2704()
+018   {
+019     super("");
+020     assignTitle();
+021     assignIcon();
+022     assignCursor();
+023     assignColors();
+024     assignFont();
+025     addWindowListener(new WindowClosingAdapter(true));
+026   }
+027 
+028   private void assignTitle()
+029   {
+030     setTitle("Veränderte Fensterelemente");
+031   }
+032 
+033   private void assignIcon()
+034   {
+035     Image img = getToolkit().getImage("testicon.gif");
+036     MediaTracker mt = new MediaTracker(this);
+037 
+038     mt.addImage(img, 0);
+039     try {
+040       //Warten, bis das Image vollständig geladen ist,
+041       mt.waitForAll();
+042     } catch (InterruptedException e) {
+043       //nothing
+044     }
+045     setIconImage(img);
+046   }
+047 
+048   private void assignCursor()
+049   {
+050     setCursor(new Cursor(Cursor.WAIT_CURSOR));
+051   }
+052 
+053   private void assignColors()
+054   {
+055     setForeground(Color.white);
+056     setBackground(Color.black);
+057   }
+058 
+059   private void assignFont()
+060   {
+061     setFont(new Font("Serif", Font.PLAIN, 28));
+062   }
+063 
+064   public void paint(Graphics g)
+065   {
+066     g.drawString("Test in Vordergrundfarbe",10,70);
+067   }
+068 }
+
+
+Listing2704.java
+ +Listing 27.4: Ein Programm mit veränderten Fensterelementen

+ +

+Die Programmausgabe ist wie folgt: +

+ + +

+ +

+Abbildung 27.4: Ein Programm mit veränderten Fensterelementen

+

+ + + + + + + + + +
+ +

+In vielen Beispielen in diesem Buch wird der Einfachheit halber die +in Abschnitt 23.2.4 vorgestellte +Klasse WindowClosingAdapter +verwendet, um einen Listener zum Schließen des Fensters zu registrieren. +Damit ein solches Beispiel sich kompilieren läßt, muss +die Datei WindowClosingAdapter.java im +aktuellen Verzeichnis vorhanden sein. Sie befindet sich auf der DVD +zum Buch oder in Listing 23.2.

+ + + + +
 Hinweis 
+
+


+ + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3