找不到JButton变量

时间:2015-06-08 12:47:12

标签: java swing radio-button awt background-color

我试图通过单击单选按钮来更改背景颜色,但是第二个单选按钮," bt2"编译器找不到变量。

我不断收到此错误消息:

"cannot find symbol bt1" in the e.getSource()==bt1

这是我的代码:

public class ColorChooser extends JFrame implements ActionListener {

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

    public ColorChooser() {
        super("ColorChooser");
        Container content = getContentPane();
        content.setBackground(Color.white);
        content.setLayout(new FlowLayout());
        JRadioButton bt1 = new JRadioButton("Red");
        JRadioButton bt2 = new JRadioButton("Yellow");

        bt1.addActionListener(this);
        bt2.addActionListener(this);
        content.add(bt1);
        content.add(bt2);
        setSize(300, 100);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == bt1)
            getContentPane().setBackground(Color.RED);
        else
            getContentPane().setBackground(Color.YELLOW);
    }
}

2 个答案:

答案 0 :(得分:2)

您应该将bt1声明为实例变量 像那样

{{1}}

答案 1 :(得分:1)

在构造函数之外声明bt1

JRadioButton bt1;

然后初始化内部构造函数

bt1 = new JRadioButton("Red");

你的代码中的问题是bt1在构造函数之外是不可见的。它被声明为块变量。你应该声明为实例varible [在类区域]。 示例

public class ColorChooser extends JFrame implements ActionListener {

    JRadioButton bt1;//declare

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

    public ColorChooser() {
        super("ColorChooser");
        Container content = getContentPane();
        content.setBackground(Color.white);
        content.setLayout(new FlowLayout());
        bt1 = new JRadioButton("Red");//initializing
        JRadioButton bt2 = new JRadioButton("Yellow");

        bt1.addActionListener(this);
        bt2.addActionListener(this);
        content.add(bt1);
        content.add(bt2);
        setSize(300, 100);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == bt1) {
            getContentPane().setBackground(Color.RED);
        } else {
            getContentPane().setBackground(Color.YELLOW);
        }

    }

}