【问题标题】:How to set background color of a button in Java GUI?如何在 Java GUI 中设置按钮的背景颜色?
【发布时间】:2011-05-09 13:06:42
【问题描述】:

下面是在特定pannel3 上以gridlayout 形式创建9 个按钮的代码。我想要的是使每个按钮的背景变黑,上面有灰色的文字。 有人可以帮忙吗?

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

【问题讨论】:

  • 老实说,人们,使用 IDE。自动完成是学习语言库的最佳方法之一,方法名称通常是不言自明的。
  • @DenisTulskiy 为什么有必要发表评论?
  • @JohnnyCoder,我想我很沮丧,这是我说 rtfm 的方式。不过,我仍然相信这是一个很好的建议:)

标签: java swing jbutton


【解决方案1】:

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

【讨论】:

  • 这不适用于 Mac 上的 Java 8。背景颜色是按钮后面的颜色。然后将按钮绘制在黑色背景之上,并且按钮是灰色的,带有灰色文本。 (您无法阅读文本)。事实上,更糟糕的是……除非先调用setOpaque(true),否则根本不会绘制黑色背景。
  • 不适用于 Java 8。正如@Jason 所说。背景颜色是按钮的颜色。
  • 使用setBorderPainted(false) 可以解决上述问题。
【解决方案2】:

简单:

btn.setBackground(Color.red);

使用 RGB 值:

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

【讨论】:

  • 我喜欢用 btn.setBackground(New Color(int, int, int));对于 RGB 值
【解决方案3】:

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

【讨论】:

    【解决方案4】:
    for(int i=1;i<=9;i++) {
        p3.add(new JButton(""+i) {{
            // initialize the JButton directly
            setBackground(Color.BLACK);
            setForeground(Color.GRAY);
        }});
    }
    

    【讨论】:

      【解决方案5】:

      您可能必须也可能不必使用 setOpaque 方法来确保通过将 true 传递给该方法来显示颜色。

      【讨论】:

        【解决方案6】:

        使用setBackground 方法设置背景,使用setForeground 更改文本颜色。但是请注意,将灰色文本放在黑色背景上可能会使您的文本有点难以阅读。

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-07-15
            • 1970-01-01
            • 2019-06-07
            • 1970-01-01
            • 2010-09-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多