我想更改Java Swing JButton的背景颜色。
原始按钮如下所示:
更改此按钮的背景颜色后,它看起来像这样:
原始人有一个"按钮"外观和感觉。然而,黄色的看起来像黄色的普通背景,顶部有一些文字。
问题:有没有简单的方法可以更改这个特定的Jbutton背景颜色,但保持外观和感觉?
P.S。我知道我可以制作图像并附在按钮上。但是,按钮大小并不总是相同,因此图像可能不是一个好主意。有没有其他方法我只需添加一些代码,如添加一些边框,边距等,以便它有更多的按钮感觉?
更新
我希望在更改背景颜色后按钮看起来像一个按钮。如果我需要添加渐变背景或做其他事情并不重要。我正在寻找一种最简单的方法。
答案 0 :(得分:1)
您可以以GradientPaint
作为背景。
public final class JGradientButtonDemo {
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI(){
final JFrame frame = new JFrame("Gradient JButton Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new FlowLayout());
frame.add(JGradientButton.newInstance());
frame.setSize(new Dimension(300, 150)); // used for demonstration
//frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static final class JGradientButton extends JButton{
private JGradientButton(){
super("Gradient Button");
setContentAreaFilled(false);
setFocusPainted(false); // used for demonstration
}
@Override
protected void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g.create();
g2.setPaint(new GradientPaint(
new Point(0, 0),
Color.WHITE,
new Point(0, getHeight()),
Color.PINK.darker()));
g2.fillRect(0, 0, getWidth(), getHeight());
g2.dispose();
super.paintComponent(g);
}
public static final JGradientButton newInstance(){
return new JGradientButton();
}
}
}
取自Change JButton gradient color, but only for one button, not all
的示例答案 1 :(得分:0)
使用this外部api。简单地说就行了
UIManager.setLookAndFeel( “com.jtattoo.plaf.aluminium.AluminiumLookAndFeel”);
作为主要方法的第一行