11

我有以下简单的代码:

btn = new JButton();
btn.setBackground(backgroundColor)

我在使用时工作:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");

但是在我评论了上述行之后,它就停止了工作。有谁知道它为什么会发生以及如何在不使用显式外观的情况下为按钮设置背景颜色?

添加

在我看来,我需要使用getBackground. 但是我不知道怎么做。

4

6 回答 6

14

必须将元素的 Opaque 设置为 true 才能填充颜色

     btn = new JButton();
     btn.setOpaque(true);
     btn.setBackground(backgroundColor);
于 2013-07-18T12:31:41.953 回答
6

从 setBackground() javadoc:

尊重此属性取决于外观和感觉,有些人可能会选择忽略它。

也许你的 LAF 只是忽略了它。

于 2011-02-14T11:07:25.313 回答
6

添加 btn.setBorderPainted(false)

于 2017-02-20T19:32:33.513 回答
0
    btn.setBorderPainted(false);
    btn.setOpaque(true);
    btn.setBackground(Color.BLACK);
    btn.setForeground(Color.BLUE);
于 2021-02-06T22:32:46.673 回答
-1

问题也可能与您创建按钮的方式有关。检查上面的代码是否:

public class Test extends JApplet{

public void init() 
{  
    java.awt.EventQueue.invokeLater(new Runnable()
    {
        public void run() 
        {   
            setSize(200, 200);
            setLayout(null);

            JPanel p = new JPanel();
            getContentPane().add(p);
            p.setSize(getSize());
            p.setLayout(null);

            JButton b = new JButton("test");
            p.add(b);
            b.setBounds(10, 10, 100, 20);
            b.setBackground(Color.GREEN);

        }
    });
}

}

于 2011-02-14T11:12:19.663 回答
-1

只需单击一次要为其设置背景的按钮,然后转到属性窗口。在那里,第二个选项将是背景。单击其省略号,您可以根据自己的喜好更改颜色。在您运行程序之前,颜色不会显示在框架中的按钮上。您可以看到按钮是您喜欢的颜色。

于 2012-06-27T16:08:12.273 回答