如何更改包含 JRadioButtons 的 jPanel 的背景颜色?
How can I change the background color of a jPanel containing JRadioButtons?
我有一个 java 作业,其中我需要根据用户选择的列出不同颜色的单选按钮更改 GUI 的背景颜色。
我的程序有一个 JFrame 来容纳所有内容,然后是该框架内的 3 个 JPanel(1 个指令区域、1 个单选按钮网格、1 个结果文本字段)。
我的动作侦听器当前正在使用以下语句设置背景颜色:getContentPane().setBackground(Color.decode(colorMap.get(btn.getName())));
JFrame 的背景和三个面板中的两个已成功更改为正确的颜色,但包含 JRadioButtons 的面板根本不会改变!
我试过更改不透明设置,我试过将面板的背景颜色设置为 (0,0,0,0),但到目前为止 none 对我有用。有没有人建议我接下来可以尝试或阅读什么?
我没有足够的声誉 post 图片,但如果看到我所说的内容有帮助,请告诉我,我可以通过电子邮件将屏幕截图发送给您。
谢谢!
您必须另外设置所有 JRadioButtons.setOpaque(false)
。
一个 JRadioButton 不透明和一个非不透明的示例:
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class XFrame
extends JFrame
{
public XFrame(String title)
{
super(title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JRadioButton b1 = new JRadioButton("Non opaque button");
// button must not be opaque
b1.setOpaque(false);
// this button is opaque and does not use the background color of the frame
JRadioButton b2 = new JRadioButton("Opaque button");
JPanel p1 = new JPanel();
// panel must be non opaque also
p1.setOpaque(false);
p1.setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS));
p1.add(b1);
p1.add(b2);
add(p1, BorderLayout.CENTER);
getContentPane().setBackground(Color.red);
setSize(200, 200);
}
public static void main(String[] args)
{
XFrame frame = new XFrame("Test");
frame.setVisible(true);
}
}
我有一个 java 作业,其中我需要根据用户选择的列出不同颜色的单选按钮更改 GUI 的背景颜色。 我的程序有一个 JFrame 来容纳所有内容,然后是该框架内的 3 个 JPanel(1 个指令区域、1 个单选按钮网格、1 个结果文本字段)。
我的动作侦听器当前正在使用以下语句设置背景颜色:getContentPane().setBackground(Color.decode(colorMap.get(btn.getName())));
JFrame 的背景和三个面板中的两个已成功更改为正确的颜色,但包含 JRadioButtons 的面板根本不会改变!
我试过更改不透明设置,我试过将面板的背景颜色设置为 (0,0,0,0),但到目前为止 none 对我有用。有没有人建议我接下来可以尝试或阅读什么?
我没有足够的声誉 post 图片,但如果看到我所说的内容有帮助,请告诉我,我可以通过电子邮件将屏幕截图发送给您。
谢谢!
您必须另外设置所有 JRadioButtons.setOpaque(false)
。
一个 JRadioButton 不透明和一个非不透明的示例:
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class XFrame
extends JFrame
{
public XFrame(String title)
{
super(title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JRadioButton b1 = new JRadioButton("Non opaque button");
// button must not be opaque
b1.setOpaque(false);
// this button is opaque and does not use the background color of the frame
JRadioButton b2 = new JRadioButton("Opaque button");
JPanel p1 = new JPanel();
// panel must be non opaque also
p1.setOpaque(false);
p1.setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS));
p1.add(b1);
p1.add(b2);
add(p1, BorderLayout.CENTER);
getContentPane().setBackground(Color.red);
setSize(200, 200);
}
public static void main(String[] args)
{
XFrame frame = new XFrame("Test");
frame.setVisible(true);
}
}