17

whats the most simple way to make a JButton only show the background color? I don't need any other effects like borders, 3D-look or hover-highlighting.

Thanks in advance.

c0d3x
  • 2,593
  • 6
  • 23
  • 18
  • Thanks for answering. There is still a highlighting going on, when I click the button. The rest is ok. Any idea howto stop it ftom highlighting? – c0d3x Dec 03 '09 at 10:59
  • You can probably control that by setting a custom `ButtonUI`. – McDowell Dec 03 '09 at 11:35

6 Answers6

32

I don't know if I have missed a point... But I usually do somtehing like this:

button.setBorderPainted(false);
button.setFocusPainted(false);
button.setContentAreaFilled(false);
  • setContentAreaFilled(false) was the last thing I was missing to make the button truly flat without a border--thanks! – rob Jan 06 '14 at 20:02
13

Just set the colours and the border:

private static JButton createSimpleButton(String text) {
  JButton button = new JButton(text);
  button.setForeground(Color.BLACK);
  button.setBackground(Color.WHITE);
  Border line = new LineBorder(Color.BLACK);
  Border margin = new EmptyBorder(5, 15, 5, 15);
  Border compound = new CompoundBorder(line, margin);
  button.setBorder(compound);
  return button;
}

Use setOpaque(false); to make the background transparent.

McDowell
  • 107,573
  • 31
  • 204
  • 267
2

How about

yourButton.setBorder(null);

?

Joonas Pulakka
  • 36,252
  • 29
  • 106
  • 169
1

First, set your look and feel to something cool, like 'metal'.

try
{
    for (UIManager.LookAndFeelInfo lnf : 
        UIManager.getInstalledLookAndFeels()) {
        if ("Metal".equals(lnf.getName())) {
            UIManager.setLookAndFeel(lnf.getClassName());
            break;
        }
    }
} catch (Exception e) { /* Lazy handling this >.> */ }

Then do something like this:

my_jbutton.setBackground(new Color(240,240,241);

If the color of your button is exactly equals to swing control color (240,240,240), windows will apply windows-like button style to the button, otherwise, the button assumes a simple flat style.

Felype
  • 3,087
  • 2
  • 25
  • 36
1

You may want to use a JLabel with a MouseListener instead... unless you're tied to using a JButton or ActionListener in some way.

Nate
  • 16,748
  • 5
  • 45
  • 59
0

I think you could do it like this

JButton button = new JButton("Click Me!!");
button.setBorderPainted(false);
button.setBackground(new Color());// inside the brackets your rgb color value like 255,255,255
button.setFocusPainted(false);

you can use the color picker to get rgb code(just search color picker)

random_hooman
  • 1,660
  • 7
  • 23