Ich möchte eine Komponente schreiben,die in der rechten Hälfte eine Fläche darstellt, erstmal schwarz.
Auf der anderen Hälfte befinden sich 3 Buttons,mit der Aufschrift grün, blau,grau.
Wenn man aud die Buttons klickt, soll sich die Fläche dementsprechend färben.
Unten befindet sich ein Textfeld, welches die Koordinaten des Mauszeigers anzeigt.
Der Listener ist ein anonymes Objekt in einer anonymen inneren Klasse.
Mein Problem ist beim GridLAyout sehe ich zwar die Buttons aber die Textfläche wird nicht als Hälfte angezeigt,sondern als Grösse der Buttons.
Wenn ich das Borderlayout einstelle, sieht man nur einen Button und das Textfeld.
Auch das mit dem Listener und den Events verstehe ich nicht so richtig.
Hab zwar ne Menge gelesen, aber irgendwo hackts.
KAnn mir jemand n Tipp geben wie ich das am besten realisiern kann?
Und ob ich Fehler habe?
Hier mein Code:
und mein Button:
Die main hab ich richtig mit den Frames,hier ist wohl was falsch!
Auf der anderen Hälfte befinden sich 3 Buttons,mit der Aufschrift grün, blau,grau.
Wenn man aud die Buttons klickt, soll sich die Fläche dementsprechend färben.
Unten befindet sich ein Textfeld, welches die Koordinaten des Mauszeigers anzeigt.
Der Listener ist ein anonymes Objekt in einer anonymen inneren Klasse.
Mein Problem ist beim GridLAyout sehe ich zwar die Buttons aber die Textfläche wird nicht als Hälfte angezeigt,sondern als Grösse der Buttons.
Wenn ich das Borderlayout einstelle, sieht man nur einen Button und das Textfeld.
Auch das mit dem Listener und den Events verstehe ich nicht so richtig.
Hab zwar ne Menge gelesen, aber irgendwo hackts.
KAnn mir jemand n Tipp geben wie ich das am besten realisiern kann?
Und ob ich Fehler habe?
Hier mein Code:
Java:
public class ButtonComponent extends JPanel{
protected Buttons red;
protected Buttons green;
protected Buttons yellow;
protected static ColorField colorfläche;
public ButtonComponent(){
setLayout(new GridLayout());
setOpaque(true);
red.setText....
green.setText...
yellow.setText..
add(red, BorderLayout.WEST);
add(green, BorderLayout.NORTH);
add(yellow, BorderLayout.SOUTH);
add(colorfläche);
add(new JTextField("Mauskoordinaten"),BorderLayout.SOUTH);
}
...
public static ColorField getColorfläche() {
return colorfläche;
}
und mein Button:
Java:
public class Buttons extends JButton {
public Buttons() {
addActionListener(new MListener());
}
class MListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
[COLOR="Red"]woher bekomme ich den command?[/COLOR]
if (command.equals("rot")) {
ButtonComponent.getColorfläche().setBackground(Color.RED);
} else if (command.equals("gelb")) {
ButtonComponent.getColorfläche().setBackground(Color.YELLOW);
} else if (command.equals("green")) {
ButtonComponent.getColorfläche().setBackground(Color.GREEN);
}
}
}
Die main hab ich richtig mit den Frames,hier ist wohl was falsch!
Zuletzt bearbeitet: