为什么setBackground到JButton不起作用?

我有以下简单的代码:

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

我用的时候工作过:

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

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

添加

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

为了填充颜色,必须将元素的不透明度设置为true

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

从setBackground()javadoc:

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

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

添加btn.setBorderPainted(false)

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

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

}

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