【发布时间】:2016-05-29 04:26:58
【问题描述】:
对两个 JButton 应用明显相同的颜色会产生不同的结果:
Color colorA = panel.getBackground();
btnA.setBackground(colorA);
Color colorB = new Color(panel.getBackground().getRGB());
btnB.setBackground(colorB);
结果如下所示:
我知道 colorA 是对 panel.getBackground() 的引用,而 colrB 是一个新的颜色对象,但两者具有相同的 rgb 值:
颜色 A RGB 为 238/238/238
颜色 B RGB 为 238/238/238
我不明白为什么两个相似的按钮显示不同的背景颜色。
这是一个完整的工作代码:
public class Test {
public static void main(String[] args) {
JFrame jf = new JFrame("Why are the colors different ?");
jf.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jf.getContentPane().setBackground(Color.WHITE);
jf.setPreferredSize(new Dimension(400,100));
Dimension size = new Dimension(125, 25);
JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER,15, 15));
jf.getContentPane().add(panel);
JButton btnA = new JButton("A");
btnA.setPreferredSize(size);
panel.add(btnA);
JButton btnB = new JButton("B");
btnB.setPreferredSize(size);
panel.add(btnB);
//-- apply background color to buttons
Color colorA = panel.getBackground();
btnA.setBackground(colorA);
Color colorB = new Color(colorA.getRGB());
btnB.setBackground(colorB);
jf.validate();
jf.pack();
jf.setVisible(true);
}
}
【问题讨论】: