JLabel.setBackground(Color c)

Heute habe ich einige Zeit mit einem sehr dummen Fehler verbracht. Und zwar wollte ich in einer Swing GUI ein JLabel mit einer bestimmten Farbe einfärben. Keine große Sache dachte ich mir. Das Label erstellt und mit der Funktion setBackground die Hintergrundfarbe gesetzt. Jedoch passierte nichts! Die Farbe ließ sich nicht ändern und so hatte das Label immer die Hintergrundfarbe des darunterliegenden Panels. Nach einigen Minuten Recherche im www, landete ich in der Bug Database von Sun. Dort wird ein Bug mit der Description “The setBackground method in JLabel does not seem to be working” geführt. Die Ursache und die Lösung des Problems war dann simple. Die Eigenschaft ‘opaque’ ist bei JLable per default auf false gesetzt. Dadurch werden gesetzte Hintergrundfarben ignoriert und das Label erschein als transparent. Wird per setOpaque(true) die Eigenschaft auf true gesetzt, wird auch der Hintergrund gezeichnet.

Ein kurzes Beispiel:

import javax.swing.*;

public class BackgroundColorTest {

	public static void main(String args[]) {
		JFrame jF = new JFrame();
		JLabel label = new JLabel("a blue JLabel");

		Container conPane = frame.getContentPane();
		FlowLayout flowLayout = new FlowLayout();
		conPane.setLayout(flowLayout);

		label.setOpaque(true);
		label.setBackground(Color.blue);
		conPane.add(label);
		jF.setSize(350, 250);
		jF.setVisible(true);
	}
}

One Response to “JLabel.setBackground(Color c)”

  1. Great post! I’ll subscribe right now wth my feedreader software!

Discussion Area - Leave a Comment

You must be logged in to post a comment.