title: Changing the background color of JButton always shows as grey
body: <p>I am making a GUI interface and I am trying to change the background and foreground color of my windows with the following code:</p>
  
  <pre><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();
  }
  }
  </code></pre>
  
  <p>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.</p>
  
  <p>Thanks in advance!</p>