Stephane Grenier
Stephane Grenier

Reputation: 15925

How to Set the Background Color of a JButton on the Mac OS

Normally with Java Swing you can set the background color of a button with:

myJButton.setBackground(Color.RED);

which would cause the button to be red. But on the Mac OS, this method seems to be ignored. The button just stays the default color.

How can the color of a JButton be set on the Mac OS?

Upvotes: 35

Views: 139959

Answers (5)

htlbydgod
htlbydgod

Reputation: 340

Based on your own purposes, you can do that based on setOpaque(true/false) and setBorderPainted(true/false); try and combine them to fit your purpose

Upvotes: -2

Lapis Diamond
Lapis Diamond

Reputation: 29

I own a mac too! here is the code that will work:

myButton.setBackground(Color.RED);
myButton.setOpaque(true); //Sets Button Opaque so it works

before doing anything or adding any components set the look and feel so it looks better:

try{
   UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
 }catch(Exception e){
  e.printStackTrace(); 
 }

That is Supposed to change the look and feel to the cross platform look and feel, hope i helped! :)

Upvotes: 1

JoJo
JoJo

Reputation: 251

If you are not required to use Apple's look and feel, a simple fix is to put the following code in your application or applet, before you add any GUI components to your JFrame or JApplet:

 try {
    UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() );
 } catch (Exception e) {
            e.printStackTrace();
 }

That will set the look and feel to the cross-platform look and feel, and the setBackground() method will then work to change a JButton's background color.

Upvotes: 25

MrSmileFace
MrSmileFace

Reputation: 431

Have you tried setting the painted border false?

JButton button = new JButton();
button.setBackground(Color.red);
button.setOpaque(true);
button.setBorderPainted(false);

It works on my mac :)

Upvotes: 43

codethulhu
codethulhu

Reputation: 3996

Have you tried setting JButton.setOpaque(true)?

JButton button = new JButton("test");
button.setBackground(Color.RED);
button.setOpaque(true);

Upvotes: 53

Related Questions