在此SSCCE代码中:
这个方法是可行的
label.setForeground(Color.GREEN);
但是下一种方法不起作用!
label.setBackground(Color.BLUE);
import java.awt.*;
import javax.swing.*;
public class LabelColorTest extends JPanel
{
static JLabel label;
JPanel panel;
public LabelColorTest()
{
label = new JLabel();
label.setVerticalAlignment(JLabel.CENTER);
label.setHorizontalAlignment(JLabel.CENTER);
label.setText("Hello world");
panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(label, BorderLayout.CENTER);
label.setForeground(Color.GREEN); //HERE
label.setBackground(Color.BLUE); //HERE
this.setLayout(new BorderLayout());
this.add(panel);
}
private static void createAndShowGUI()
{
JFrame frame = new JFrame("Hellow world");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 250);
frame.add(new LabelColorTest(), BorderLayout.CENTER);
frame.setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
UIManager.put("swing.boldMetal", Boolean.FALSE);
createAndShowGUI();
}
});
}
}
发布于 2013-01-29 03:01:20
一个组件必须是不透明的,因为它的背景是有效的,JLabel的默认值是false,所以你必须设置它:
label.setOpaque(true);
发布于 2013-01-29 03:01:41
您需要首先将标签设置为不透明。不然的话,它就不会被画了。查看:How do I set a JLabel's background color?
https://stackoverflow.com/questions/14569138
复制相似问题