Hallo Jungs und Mädels,
ich habe ein kleines Problemchen. Ich habe im Anfang dieses Jahres einen Kurs für JAVA gemacht und diesen auch bestanden. Nun muss ich noch eine kleine Projektarbeit machen. Leider habe ich schon wieder soooo viel vergessen seit diesem Kurs. Ich komme leider mit einem Teil der Arbeit überhaupt nicht klar. Entweder habe ich da nicht aufgepasst oder wird haben es nicht durchgenommen. Eher denke ich aber mal das erstere :-(.......
Aber ich hoffe, ihr könnt mir evtl. bei diesem Teil der Aufgabe helfen, es wäre wirklich wichtig.... so und nun mal zum kleingedruckten:
Es ist so, dass eine Klasse ColorChooser, die ein Fenster erzeugt, an dessen oberen Rand sich ein Auswahlfeld (Choice) befindet vorgegeben ist. Diese sieht so aus:
Bisher enthält die Klasse nur die Gestaltung der Oberfläche. Ich soll jetzt die vorgegebene Klasse durch die Behandlung von Ereignissen mit Funktionalität füllen. 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.
Die Klassen sind mir ebenfalls schon benannt. Es sollen zwei innere Klassen WindowHandler und ItemHandler, die die Listener-Interfaces für die beiden angesprochenen Ereignisarten implementieren beeinhalten. Zusätzlich muss ich von 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.
Dem vorhandenen Objekt vom Typ Choice kann ja bereits 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 ich doch die Methode setBackground() der Klasse Frame verwenden, oder? Ihr einziges Argument ist eine Farbangabe wie sie in dem Array colors abgelegt ist.
Bitte um Hilfe....
ich habe ein kleines Problemchen. Ich habe im Anfang dieses Jahres einen Kurs für JAVA gemacht und diesen auch bestanden. Nun muss ich noch eine kleine Projektarbeit machen. Leider habe ich schon wieder soooo viel vergessen seit diesem Kurs. Ich komme leider mit einem Teil der Arbeit überhaupt nicht klar. Entweder habe ich da nicht aufgepasst oder wird haben es nicht durchgenommen. Eher denke ich aber mal das erstere :-(.......
Aber ich hoffe, ihr könnt mir evtl. bei diesem Teil der Aufgabe helfen, es wäre wirklich wichtig.... so und nun mal zum kleingedruckten:
Es ist so, dass eine Klasse ColorChooser, die ein Fenster erzeugt, an dessen oberen Rand sich ein Auswahlfeld (Choice) befindet vorgegeben ist. Diese sieht so aus:
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]);
}
/* ToDo: Fügen Sie ein Objekt der Klasse ItemHandler als
* ItemListener hinzu. Die Klasse ItemHandler erstellen sie
* später. */
frame.add(choice, BorderLayout.NORTH);
/* ToDo: Fügen Sie ein Objekt der Klasse WindowHandler als
* WindowListener hinzu. Die Klasse WindowHandler erstellen sie
* später. */
frame.setSize(300, 300);
frame.setVisible(true);
}
/** Innere Klasse WindowHandler */
/* ToDo: Erstellen Sie hier die Klasse WindowHandler. Implementieren
* Sie darin die Methode windowClosing(). */
/** Innere Klasse ItemHandler */
/* ToDo: Erstellen Sie hier die Klasse ItemHandler. Implementieren
* Sie darin die Methode itemStateChanged(). Finden Sie nach einer
* Änderung der Auswahl heraus, welcher Eintrag ausgewählt wurde (mit
* den Methoden getSource() und getSelectedIndex()) und ändern Sie die
* Hintergrundfarbe des Fensters entsprechend. */
public static void main(String args[]) {
ColorChooser c = new ColorChooser();
}
}
Bisher enthält die Klasse nur die Gestaltung der Oberfläche. Ich soll jetzt die vorgegebene Klasse durch die Behandlung von Ereignissen mit Funktionalität füllen. 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.
Die Klassen sind mir ebenfalls schon benannt. Es sollen zwei innere Klassen WindowHandler und ItemHandler, die die Listener-Interfaces für die beiden angesprochenen Ereignisarten implementieren beeinhalten. Zusätzlich muss ich von 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.
Dem vorhandenen Objekt vom Typ Choice kann ja bereits 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 ich doch die Methode setBackground() der Klasse Frame verwenden, oder? Ihr einziges Argument ist eine Farbangabe wie sie in dem Array colors abgelegt ist.
Bitte um Hilfe....