I'm doing a few GUI tests with Java on Windows 7. I would like to use the Windows Look & Feel because Java's default "Metal" UI is really ugly IMO. When I set the background color of a button, it just colors the border around the button rather than fill its whole background.
public class GUITest {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {} // I know, not a good idea, but it's just a test
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
JButton button = new JButton("Windows L&F");
button.setFocusable(false);
button.setBackground(Color.GREEN.darker());
frame.add(button);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
The result is this:
Whereas I'm aiming for something like this (but without using the Metal L&F):
Is there a way to do that with the Windows L&F, or is it simply not built in?
解决方案
Some PLAFs support (custom) colored buttons. Others don't.
One way to achieve what you seem to want is to write the button text in an image with green BG and use the image for an icon of a button without text.