2010-11-13 116 views
11

下面是在特定的pannel3上以网格布局形式创建9个按钮的代码。我想要的是让每个按钮的背景都以灰色文字覆盖黑色。 任何人都可以帮忙吗?如何在Java GUI中设置按钮的背景颜色?

for(int i=1;i<=9;i++) 
{ 
    p3.add(new JButton(""+i)); 
} 
+5

老实说,人,使用IDE。自动完成是学习语言库的最佳方法之一,方法名称通常是不言自明的。 – 2010-11-14 04:36:01

+0

@DenisTulskiy为什么你的评论是必要的? – Ungeheuer 2015-06-02 02:55:24

+0

@JohnnyCoder,我想我很沮丧,这是我说rtfm的方式。我仍然认为这是一个很好的建议,尽管:) – 2015-06-02 04:29:26

回答

16

检查出JButton文档。请特别注意从JComponent继承的setBackgroundsetForeground方法。

喜欢的东西:

for(int i=1;i<=9;i++) 
{ 
    JButton btn = new JButton(String.valueOf(i)); 
    btn.setBackground(Color.BLACK); 
    btn.setForeground(Color.GRAY); 
    p3.add(btn); 
} 
+8

这不适用于Mac上的Java 8。背景颜色是按钮背后的颜色。该按钮然后被绘制在黑色背景的顶部,并且该按钮是灰色并带有灰色文本。 (你不能阅读文本)。事实上,更糟糕的是,除非先调用setOpaque(true)',否则黑色背景根本不会被绘制。 – Jason 2016-03-10 23:25:46

3
for(int i=1;i<=9;i++) { 
    p3.add(new JButton(""+i) {{ 
     // initialize the JButton directly 
     setBackground(Color.BLACK); 
     setForeground(Color.GRAY); 
    }}); 
} 
1

使用setBackground方法来设置背景和setForeground改变文本的颜色。但请注意,将灰色文本置于黑色背景中可能会使您的文本难以阅读。

2

您可能或可能不必使用setOpaque方法,以确保通过传递true方法显示颜色。

0

看来,setBackground()方法在某些平台(我正在使用Windows 7)上无法正常工作。我发现this answerthis question有帮助。但是,我并没有完全用它来解决我的问题。相反,我认为将按钮旁边的面板着色要容易得多,而且几乎是美观的。

11

简单:

btn.setBackground(Color.red);

要使用RGB值:

btn[i].setBackground(Color.RGBtoHSB(int, int, int, float[]));

+1

我喜欢用btn.setBackground(New Color(int,int,int));为RGB值 – 2016-01-26 02:02:28

1

更改背景属性可能没有足够的组件将不会看起来像一个按钮了。您可能需要重新实现paint方法,如here以获得更好的结果:

enter image description here