Ich soll eine Klasse ColorChooser bauen, die ein Fenster erzeugt, an dessen oberen Rand sich ein Auswahlfeld (Choice) befindet. In diesem Auswahlfeld kann der Benutzer eine von mehren angebotenen Farben auswählen. Meine bisher erstellte Klasse enthält die Gestaltung der Oberfläche. Diese Klasse soll nun durch die Behandlung von Ereignissen mit Funktionalität gefüllt. Die Auswahl einer Farbe in dem Auswahlfeld soll dazu führen, dass der Hintergrund des Fensters seine Farbe entsprechend ändert. Dazu muss, wenn ein Eintrag der Farbliste ausgewählt wurde, dessen Position in der Liste ermittelt und die
entsprechende Farbe aus dem Array colors als Hintergrundfarbe eingesetzt werden.
Außerdem soll das Programm mit System.exit(0) abgebrochen werden, wenn der
Benutzer das Schließen des Fensters veranlasst.
Dazu muss ich zwei innere Klassen WindowHandler und ItemHandler erstellen, die die Listener-Interfaces für die beiden angesprochenen Ereignisarten implementieren. Ich soll dabei von Adapter-Klassen Gebrauch machen, wo dies sinnvoll ist. In jeder dieser inneren Klassen soll die entsprechende Methode des Interfaces so überschrieben werden,
dass die gewünschten Reaktionen auf Aktionen des Benutzers erfolgen. Zusätzlich
müssen dafür im Konstruktor der Klasse ColorChooser Instanzen dieser inneren
Klassen angelegt und den entsprechenden Objekten als Listener hinzugefügt
werden. Die notwendigen Ergängzungen an den mit entsprechenden Kommentaren markierten Stellen im Quelltext der Klasse muss sollte ich ebenfalls noch vornehmen.
Einem Objekt vom Typ Choice kann ein ItemListener hinzugefügt werden. Das
Interface ItemListener deklariert eine Methode itemStateChanged(), deren Argument
ein ItemEvent ist und die aufgerufen wird, wenn ein neuer Eintrag in der Auswahlliste
ausgewählt wird. Aus einem Event-Objekt kann mit der Methode getSource() die
auslösende Komponente (z.B. eine Referenz auf die Auswahlliste) ermittelt werden.
Ein Objekt vom Typ Choice besitzt eine Methode getSelectedIndex(), die den Index
des gewählten Eintrags in der Liste zurückliefert.
Zum Ändern der Hintergrundfarbe des Fensters kann die Methode setBackground()
der Klasse Frame verwendet werden. Ihr einziges Argument ist eine Farbangabe wie
sie in dem Array colors abgelegt ist.
Nun habe ich eine Klasse schon erstellt. Leider komm ich im Moment nicht weiter.
kann mir jemand dabei helfen, diese Klasse so zu verändern, dass ich die Aufgabenstellung lösen kann
entsprechende Farbe aus dem Array colors als Hintergrundfarbe eingesetzt werden.
Außerdem soll das Programm mit System.exit(0) abgebrochen werden, wenn der
Benutzer das Schließen des Fensters veranlasst.
Dazu muss ich zwei innere Klassen WindowHandler und ItemHandler erstellen, die die Listener-Interfaces für die beiden angesprochenen Ereignisarten implementieren. Ich soll dabei von Adapter-Klassen Gebrauch machen, wo dies sinnvoll ist. In jeder dieser inneren Klassen soll die entsprechende Methode des Interfaces so überschrieben werden,
dass die gewünschten Reaktionen auf Aktionen des Benutzers erfolgen. Zusätzlich
müssen dafür im Konstruktor der Klasse ColorChooser Instanzen dieser inneren
Klassen angelegt und den entsprechenden Objekten als Listener hinzugefügt
werden. Die notwendigen Ergängzungen an den mit entsprechenden Kommentaren markierten Stellen im Quelltext der Klasse muss sollte ich ebenfalls noch vornehmen.
Einem Objekt vom Typ Choice kann ein ItemListener hinzugefügt werden. Das
Interface ItemListener deklariert eine Methode itemStateChanged(), deren Argument
ein ItemEvent ist und die aufgerufen wird, wenn ein neuer Eintrag in der Auswahlliste
ausgewählt wird. Aus einem Event-Objekt kann mit der Methode getSource() die
auslösende Komponente (z.B. eine Referenz auf die Auswahlliste) ermittelt werden.
Ein Objekt vom Typ Choice besitzt eine Methode getSelectedIndex(), die den Index
des gewählten Eintrags in der Liste zurückliefert.
Zum Ändern der Hintergrundfarbe des Fensters kann die Methode setBackground()
der Klasse Frame verwendet werden. Ihr einziges Argument ist eine Farbangabe wie
sie in dem Array colors abgelegt ist.
Nun habe ich eine Klasse schon erstellt. Leider komm ich im Moment nicht weiter.
Code:
import java.awt.*;
import java.awt.event.*;
public class ColorChooser {
/** Attribute */
private Frame frame;
private Choice choice;
private Color[] colors = { Color.black, Color.blue, Color.cyan,
Color.darkGray, Color.gray, Color.green,
Color.lightGray, Color.magenta, Color.orange,
Color.pink, Color.red, Color.white, Color.yellow
};
private String[] colorNames = { "Schwarz", "Blau", "Cyan",
"Dunkelgrau", "Grau", "Grün",
"Hellgrau", "Magenta", "Orange",
"Pink", "Rot", "Weiß", "Gelb"
};
/** Konstruktor */
public ColorChooser() {
frame = new Frame("Color Chooser");
choice = new Choice();
for(int i = 0; i < colorNames.length; i++) {
choice.add(colorNames[i]);
}
/* Hier sollte die Klasse ItemHandler als
ItemListener hinzugefügt werden. Die Klasse ItemHandler würde später
erstellt werden. */
frame.add(choice, BorderLayout.NORTH);
/* ToDo: Hier sollte ein Objekt der Klasse WindowHandler als
* WindowListener erstellt werden. Die Klasse WindowHandler sollte späte
erstellt werden. */
frame.setSize(300, 300);
frame.setVisible(true);
}
/** Innere Klasse WindowHandler */
/* ToDo: Hier Klasse WindowHandler. Implemtation
* der Methode windowClosing(). */
/** Innere Klasse ItemHandler */
/* ToDo: Hier die Klasse ItemHandler. Implementation
* der Methode itemStateChanged(). Zusätzliche
* Änderung der Auswahl heraus, welcher Eintrag ausgewählt wurde (mit
* den Methoden getSource() und getSelectedIndex()) und Änderung der
* Hintergrundfarbe des Fensters entsprechend der Auswahl. */
public static void main(String args[]) {
ColorChooser c = new ColorChooser();
}
}
kann mir jemand dabei helfen, diese Klasse so zu verändern, dass ich die Aufgabenstellung lösen kann