如何在Java GUI中设置按钮的背景色?

20jt8wwn  于 2023-03-16  发布在  Java
关注(0)|答案(8)|浏览(249)

下面的代码在一个特定的pannel3上创建了9个网格布局形式的按钮。我想要的是使每个按钮的背景是黑色的,上面有灰色的文字。有人能帮忙吗?

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

hsvhsicv1#

查看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);
}
izj3ouym

izj3ouym2#

简单:
btn.setBackground(Color.red);
要使用RGB值:
btn[i].setBackground(Color.RGBtoHSB(int, int, int, float[]));

iszxjhcz

iszxjhcz3#

改变background属性可能还不够,因为组件看起来不再像按钮了。你可能需要像here那样重新实现paint方法来获得更好的结果:

wqsoz72f

wqsoz72f4#

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

0kjbasz65#

您可以使用setOpaque方法,也可以不使用该方法,通过向该方法传递true来确保显示颜色。

tyu7yeag

tyu7yeag6#

setBackground()方法似乎在某些平台上不能很好地工作(我使用的是Windows 7)。我发现this answerthis question很有帮助。然而,我并没有完全使用它来解决我的问题。相反,我认为给按钮旁边的面板上色会更容易,而且几乎同样美观。

093gszye

093gszye7#

使用setBackground方法设置背景,使用setForeground方法更改文本的颜色。但是请注意,将灰色文本置于黑色背景上可能会使文本坚韧阅读。

pinkon5k

pinkon5k8#

我尝试了之前的解决方案,但仍然无法改变颜色。遇到另一篇文章,解决了我的问题。按钮是由不同的层。删除所有这些层有助于:

btn.setOpaque(true);
    btn.setContentAreaFilled(true);
    btn.setBorderPainted(false);
    btn.setFocusPainted(false);
    btn.setBackground(Color.GRAY); // for the background
    btn.setForeground(Color.white); // for the text

相关问题