【问题标题】:Background color wont be applied to JButton背景颜色不会应用于 JButton
【发布时间】:2016-03-03 02:57:37
【问题描述】:

我有一个带有 jcolorchooser 一些文本字段和一个按钮的简单程序。 当我按下按钮时,jcolorchooser 出现,然后我选择一种颜色。 现在假设我想采用我选择的背景颜色并将其应用于我的按钮,如下所示:

public class Slide extends JFrame{

    Color bgColor;
    JButton colorButton=new JButton();
    JColorChooser colorPicker=new JColorChooser();
    public Slide(){
        JPanel panel=new JPanel();
        panel.setLayout(new MigLayout("", "[][][][][]", "[][][][][][]"));
        colorButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                JColorChooser.showDialog(null, "title", null);
                bgColor=colorPicker.getBackground();
                colorButton.setBackground(bgColor);
            }
        });
        colorButton.setText("Pick a color");
        panel.add(colorButton, "cell 0 5");
        this.setSize(400, 400);
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String args[]){
        new Slide();
    }
}

问题是我的 bgcolor 不会应用于我的 colorButton。有什么想法吗?

【问题讨论】:

    标签: java swing jcolorchooser


    【解决方案1】:

    用户从 JColorChooser 对话框中选择的颜色作为 showDialog() 方法的返回值返回给您。

    要使用对话框中选择的颜色更新 JButton,您应该将代码更改为:

    colorButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            Color color = JColorChooser.showDialog(null, "title", null);
    
            if (color != null) {
                colorButton.setBackground(color);
            }
        }
    });
    

    请注意,如果用户已取消,showDialog() 方法将返回 null,这就是为什么我们需要在分配颜色之前检查它的值。

    方法 getBackground() 是来自 Component 类的方法,因此前面的代码 bgColor=colorPicker.getBackground() 只是简单地返回 JColorChooser 对话框组件的实际颜色。

    【讨论】:

    • 如果还想从 jcolorchooser 设置我的按钮的前景色和背景色怎么办
    • "what if also want .." 鉴于您的第一个问题已得到解答,请accept the answer 并开始一个新问题(在新线程上)。
    猜你喜欢
    • 2015-06-29
    • 2011-03-12
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2019-07-07
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多