如何使用侦听器更改JFrame(Java)的背景颜色?

如何使用侦听器更改JFrame(Java)的背景颜色?,java,swing,listener,background-color,Java,Swing,Listener,Background Color,因此,我必须制作一个GUI,将颜色名称列表作为单选按钮,当您单击按钮时,它会将背景更改为该颜色。问题是,当我点击按钮时,它不会改变颜色。这是我的听众: ActionListener buttons = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setBackground(Color.decode("#" + getColor()));

因此,我必须制作一个GUI,将颜色名称列表作为单选按钮,当您单击按钮时,它会将背景更改为该颜色。问题是,当我点击按钮时,它不会改变颜色。这是我的听众:

ActionListener buttons = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        setBackground(Color.decode("#" + getColor()));
        repaint();
    }
};
getColor()返回所选颜色的6位十六进制代码。我的实际代码相当长且乏味(没有通过循环创建GUI组件的诀窍,它有20个按钮),但我可以根据请求发布它。我相当肯定,问题出在我发布的代码块中。

只需使用:

getContentPane().setBackground(Color.decode("#" + getColor()));

您正在尝试更改Jframe容器的颜色吗?我正在尝试更改显示单选按钮的窗口的背景颜色。“我的实际代码相当长”您的(长)代码与此无关,但为了更快地获得更好的帮助,请发布一个。在SSCCE中包含该方法不应超过20-50行代码。我的SSCCE(第一行,sry,如果它很糟糕)作为“作为答复”发布给哪里或谁?我没有看到SSCCE。我尝试了getContentPane(),没有这样的运气。您的
ActionListener
按钮是否已注册?发布你的代码的简短版本我测试了这个建议,发现它有效。请注意,
decode()
需要像
a0b0c0
这样的“全长”字符串,而不是常见的
abc
缩写才能正常工作。@user2302019使用
p1。setBackground(…)
因为
p1
是您的主面板