JButton,setText不起作用?

时间:2013-07-29 11:24:43

标签: java swing variables jbutton shadowing

我尝试制作更改其他按钮文本的按钮,但是settext不起作用。

这是appdroid.java:

包appdroid;

public class appdroid{

    static int a = 640;
    static int b = 400;
    static int c = 100;
    static int d = 100;

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

这是gui.java:

package appdroid;
import javax.swing.AbstractButton;
import javax.swing.JFrame;
import javax.swing.JButton;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class gui extends JFrame implements ActionListener {

    String[] a = {"Search device","Device not found","Error, bad device","Device found"};
    String[] b = {"Device not found","Error, bad device","Compile"};
    String[] c = {"Device not found","Error, bad device","Unpack"};
    String d = a[0];
    String f = b[0];
    String g = c[0];
    private JButton b1;
    private JButton b2;
    private JButton b3;

    public gui(){

        super("APPDROID");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setSize(appdroid.a,appdroid.b);
        setLocation(appdroid.c,appdroid.d);
        setLayout(new FlowLayout());

        JButton b1 = new JButton(d);
        JButton b2 = new JButton(f);
        JButton b3 = new JButton(g);

        b1.addActionListener(this);
        b2.addActionListener(this);
        b3.addActionListener(this);

        add (b1);
        add (b2);
        add (b3);
    }

    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();

        if(source == b1){
            d = a[3];
            f = b[2];
            b1.setText(d);
            b2.setText(f);
        }

        if(source == b2){
            g = c[2];
            b3.setText(g);
        }

        if(source == b3 && g == c[2]){
            ;
        }
    }
}

我在按钮等处添加了动作事件,但是它无法正常工作。

1 个答案:

答案 0 :(得分:5)

您在gui()构造函数

中创建了3个局部变量
    JButton b1 = new JButton(d);
    JButton b2 = new JButton(f);
    JButton b3 = new JButton(g);

我想你想初始化字段?

    b1 = new JButton(d);
    b2 = new JButton(f);
    b3 = new JButton(g);

因为您要在source

中将b1与字段b2actionPerformed(ActionEvent e) { ...进行比较