为什么setBackground到JButton不起作用?

时间:2011-02-14 10:14:20

标签: java swing jbutton look-and-feel setbackground

我有以下简单的代码:

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

我用过的时候工作过:

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

但是在我评论了上述内容后,它停止了工作。有没有人知道为什么会发生这种情况以及如何在不使用明确外观的情况下为按钮设置背景颜色?

ADDED

在我看来,我需要使用getBackground。但我不知道如何。

6 个答案:

答案 0 :(得分:12)

有必要将元素的Opaque设置为true以填充颜色

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

答案 1 :(得分:6)

来自setBackground()javadoc:

  

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

也许你的LAF忽略了它。

答案 2 :(得分:4)

添加btn.setBorderPainted(false)

答案 3 :(得分:0)

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

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);

        }
    });
}

}

答案 4 :(得分:0)

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

答案 5 :(得分:0)

    - set_fact:
        java_jdk_already_installed: true
      when: java_yum_output.results.0.yumstate|default('') == "installed"