当前位置: 动力学知识库 > 问答 > 编程问答 >

java - Changing the background color of JButton always shows as grey

问题描述:

I am making a GUI interface and I am trying to change the background and foreground color of my windows with the following code:

 import java.awt.Color;

import java.awt.Component;

import java.awt.Container;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Test

{

public static void changeColor(String typeOfColor, Component component, Color color)

{

if (typeOfColor.equals("Background"))

{

component.setBackground(color);

}

else if (typeOfColor.equals("Foreground"))

{

component.setForeground(color);

}

if (component instanceof Container)

{

for (Component child : ((Container) component).getComponents())

{

changeColor(typeOfColor, child, color);

}

}

}

public static void main(String[] args)

{

JPanel panel = new JPanel();

JButton cancelButton = new JButton("Cancel");

panel.add(cancelButton);

changeColor("Background", panel, new Color(0, 255, 0));

JFrame frame = new JFrame("Frame");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setContentPane(panel);

frame.setVisible(true);

frame.pack();

}

}

However, no matter what is the color I choose, the buttons still display the background color as grey. How do I change the background color properly? I have looked around and most answers mention the setBackground method, but that does not work for me.

Thanks in advance!

网友答案:

Check on your current program the order of these lines:

panel.add(cancelButton);
changeColor("Background", panel, new Color(0, 255, 0));

If you have them in this order you get this output:

But if you change the order:

changeColor("Background", panel, new Color(0, 255, 0));
panel.add(cancelButton);

You get this:

网友答案:

Nicholas Smith solved my issue.

In the comments, he mentioned "It could be the background color for a JButton in your specific LookAndFeel can't be overridden."

I was setting the look and feel in my code and once I removed that part of the code, my buttons' background color was changed successfully.

Thanks to you!

网友答案:

You should change the LookAndFeel of your GUI with UIManager.setLookAndFeel().

It happened to me several times in MacOSX

分享给朋友:
您可能感兴趣的文章:
随机阅读: