Bei erstelltem Label Farbe ändern

Hallo zusammen,

habe mit Java und Swing eine kleine Anwendung geschrieben, die Mitgliedskarten erstellt.

Meine Anwendung erstellt zuerst ein Frame in dem die ganzen Eingabefelder sind und ein Button der einen ColorChooser öffnet. Dort soll eine Farbe ausgesucht werden und ein bereits erstelltes Label in dem bereits geöffneten Fenster geändert werden.

Die Farbe kommt an der richtigen Stelle an, jedoch ändert sich die Farbe im Label nicht…

Bitte helft mit.
Danke.

Hallo,

solche Fragen tauchen immer auf, wenn das bereits erstellte Fenster nicht mehr verändert werden kann. So aus der Ferne ist das Problem ohne Code nicht zu beantworten.

Gruß VA

Hi,

schau dir mal folgendes Java File an.

http://download.oracle.com/javase/tutorial/uiswing/e…

Im Quellcode gibt es folgende Stelle:

public void stateChanged(ChangeEvent e) {
Color newColor = tcc.getColor();
banner.setForeground(newColor);
}

wenn du gegen tauscht, ändert sich die Hintergrundfarbe des Labels.

Ich hoffe das hilft dir ersteinmal auf die Schnelle.

Schönen Tag noch

Hallo innebg,

es sollte funktionieren, wenn dem Lable mit setBackground(color) oder setForeground(color) die aus dem Dialog erhaltene Farbe gesetzt wird.

Hier mein Beispiel:

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class MyLabel extends JLabel
implements ActionListener
{
private static final long serialVersionUID = 1L;

public static void main(String[] args)
{
MyLabel l = new MyLabel();
l.setText(„my new MyLabel“);
l.setHorizontalAlignment(SwingConstants.CENTER);
JButton b = new JButton(„Choose color“);
b.addActionListener(l);
final Frame f = new Frame(„wer-weiss-was“);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
f.dispose();
}
});
f.setLayout(new BorderLayout());
f.add(l, BorderLayout.CENTER);
f.add(b, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}

public void actionPerformed(ActionEvent a)
{
this.setForeground(JColorChooser.showDialog(this, „Choose color“, this.getForeground()));
};
}

Johannes

Ein Code-Beispiel wäre eventuell hilfreich. Ansonsten einfach mal probieren label.repaint() aufzurufen.