更改 JButton 背景颜色
Change JButton background color
这是我的代码的样子:
//color selection (all First column element)
JButton A1 = new JButton("");
A1.setBackground(Color.BLACK);
A1.setContentAreaFilled(false);
A1.setBounds(0, 288, 44, 29);
contentPane.add(A1);
JButton A2 = new JButton("");
A2.setBackground(Color.MAGENTA);
A2.setContentAreaFilled(false);
A2.setBounds(0, 316, 44, 29);
contentPane.add(A2);
怎么改都好像是颜色和按钮不兼容的问题。我尝试使用 setOpaque
和其他方法,但仍然没有用。
如何更改JButton
的背景颜色?
您需要删除 setContentAreaFilled(false)
才能将背景颜色应用到 JButton
。
JButton A1 = new JButton("Test");
A1.setBackground(Color.BLACK);
A1.setBounds(0, 288, 44, 29);
contentPane.add(A1);
JButton A2 = new JButton("Test2");
A2.setBackground(Color.MAGENTA);
A2.setBounds(0, 316, 44, 29);
contentPane.add(A2);
“问题”- 大多数外观通常会在呈现按钮时忽略背景颜色并应用它们自己的内部样式,例如在 MacOS 上。这...
JButton b1 = new JButton("Test");
b1.setBackground(Color.BLACK);
add(b1);
JButton b2 = new JButton("Test2");
b2.setBackground(Color.MAGENTA);
add(b2);
会产生这个...
在大多数情况下,按钮默认是透明的(根据我的经验),因此我们需要做一些类似...
JButton b1 = new JButton("Test");
b1.setBackground(Color.BLACK);
b1.setOpaque(true);
add(b1);
JButton b2 = new JButton("Test2");
b2.setBackground(Color.MAGENTA);
b2.setOpaque(true);
add(b2);
这会产生...
这是因为外观正在应用它自己的样式(通过 borderPainted
属性)
所以,如果相反,我们做了类似...
JButton b1 = new JButton("Test");
b1.setBackground(Color.BLACK);
b1.setOpaque(true);
b1.setBorderPainted(false);
add(b1);
JButton b2 = new JButton("Test2");
b2.setBackground(Color.MAGENTA);
b2.setOpaque(true);
b2.setBorderPainted(false);
add(b2);
我们最终会...
太棒了,从技术上讲,我们已经更改了按钮的背景,但我不了解你,这不是我真正想要的。没有“简单”的方法可以更改已使用的“边框”的背景颜色(至少我发现它不是跨平台独立的)。 “唯一”的解决方案是创建一个新的外观和感觉委托,它可以通过某种方式为按钮边框提供填充颜色并自己渲染它,但是如果您想跨不同平台使用它,那就需要做很多工作(我研究过尝试为 MacOS 制作一个但放弃了,因为 MacOS 必须“不同”)
这是我的代码的样子:
//color selection (all First column element)
JButton A1 = new JButton("");
A1.setBackground(Color.BLACK);
A1.setContentAreaFilled(false);
A1.setBounds(0, 288, 44, 29);
contentPane.add(A1);
JButton A2 = new JButton("");
A2.setBackground(Color.MAGENTA);
A2.setContentAreaFilled(false);
A2.setBounds(0, 316, 44, 29);
contentPane.add(A2);
怎么改都好像是颜色和按钮不兼容的问题。我尝试使用 setOpaque
和其他方法,但仍然没有用。
如何更改JButton
的背景颜色?
您需要删除 setContentAreaFilled(false)
才能将背景颜色应用到 JButton
。
JButton A1 = new JButton("Test");
A1.setBackground(Color.BLACK);
A1.setBounds(0, 288, 44, 29);
contentPane.add(A1);
JButton A2 = new JButton("Test2");
A2.setBackground(Color.MAGENTA);
A2.setBounds(0, 316, 44, 29);
contentPane.add(A2);
“问题”- 大多数外观通常会在呈现按钮时忽略背景颜色并应用它们自己的内部样式,例如在 MacOS 上。这...
JButton b1 = new JButton("Test");
b1.setBackground(Color.BLACK);
add(b1);
JButton b2 = new JButton("Test2");
b2.setBackground(Color.MAGENTA);
add(b2);
会产生这个...
在大多数情况下,按钮默认是透明的(根据我的经验),因此我们需要做一些类似...
JButton b1 = new JButton("Test");
b1.setBackground(Color.BLACK);
b1.setOpaque(true);
add(b1);
JButton b2 = new JButton("Test2");
b2.setBackground(Color.MAGENTA);
b2.setOpaque(true);
add(b2);
这会产生...
这是因为外观正在应用它自己的样式(通过 borderPainted
属性)
所以,如果相反,我们做了类似...
JButton b1 = new JButton("Test");
b1.setBackground(Color.BLACK);
b1.setOpaque(true);
b1.setBorderPainted(false);
add(b1);
JButton b2 = new JButton("Test2");
b2.setBackground(Color.MAGENTA);
b2.setOpaque(true);
b2.setBorderPainted(false);
add(b2);
我们最终会...
太棒了,从技术上讲,我们已经更改了按钮的背景,但我不了解你,这不是我真正想要的。没有“简单”的方法可以更改已使用的“边框”的背景颜色(至少我发现它不是跨平台独立的)。 “唯一”的解决方案是创建一个新的外观和感觉委托,它可以通过某种方式为按钮边框提供填充颜色并自己渲染它,但是如果您想跨不同平台使用它,那就需要做很多工作(我研究过尝试为 MacOS 制作一个但放弃了,因为 MacOS 必须“不同”)