为什么添加监视器的按钮点击无用

问题描述:

package dialog;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AddDialog extends JDialog {
    private static final long serialVersionUID = 1L;//定义程序序列化ID
    JButton b1, b2,b3;
    JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6, jtf7,jtf8;
    HandleAddDialog add;
    public AddDialog(JFrame frame) {                      //视图
        super(frame, "添加信息(3200608050 胡成艺)", true);//继承父类
        initView();
        addListener();
    }
        private void initView() {
            Container c = this.getContentPane();
            setLayout(new BorderLayout());//设置布局为BorderLayout
            setBounds(700, 250, 450, 300);
            JPanel jp = new JPanel();//添加JPanel面板
            jp.setLayout(new GridLayout(4, 1));
            JPanel jp1 = new JPanel();
            jp1.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 5));
            JLabel jl1 = new JLabel("学号: ");
            jtf1 = new JTextField(10);//输入学号
            jp1.add(jl1);
            jp1.add(jtf1);
            JLabel jl5 = new JLabel("姓名: ");
            jtf5 = new JTextField(10);//输入姓名
            jp1.add(jl5);
            jp1.add(jtf5);
            JPanel jp2 = new JPanel();
            jp2.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 5));
            JLabel jl2 = new JLabel("身份: ");
            jtf2 = new JTextField(10);//输入身份
            jtf2.setText("学生");
            jtf2.setEditable(false);
            jp2.add(jl2);
            jp2.add(jtf2);
            JLabel jl6 = new JLabel("班级: ");
            jtf6 = new JTextField(10);//输入班级
            jp2.add(jl6);
            jp2.add(jtf6);
            JPanel jp3 = new JPanel();
            jp3.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 5));
            JLabel jl3 = new JLabel("用电量: ");
            jtf3 = new JTextField(10);//输入输入用电量
            jp3.add(jl3);
            jp3.add(jtf3);
            JLabel jl7 = new JLabel("用水量: ");
            jtf7 = new JTextField(10);//输入输入用水量
            jp3.add(jl7);
            jp3.add(jtf7);
            JPanel jp4 = new JPanel();
            jp4.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 5));
            JLabel jl4 = new JLabel("电话: ");
            jtf4 = new JTextField(10);//输入电话
            JLabel jl8 = new JLabel("是否缴费:");
            jtf8 = new JTextField(10);//输入是否缴费
            jp4.add(jl4);
            jp4.add(jtf4);
            jp4.add(jl8);
            jp4.add(jtf8);
            JPanel j = new JPanel();
            j.setLayout(new FlowLayout(FlowLayout.RIGHT, 20, 10));
            b1 = new JButton("添加");//添加信息按钮
            b2 = new JButton("返回");//返回上一届面
            b3 = new JButton("切换教师/学生");//切换教工与学生
            j.add(b3);
            j.add(b1);
            j.add(b2);
            jp.add(jp1);
            jp.add(jp2);
            jp.add(jp3);
            jp.add(jp4);
            c.add(jp, BorderLayout.CENTER);
            c.add(j, BorderLayout.SOUTH);
            b3.addActionListener(new ActionListener() {       //内部类
                public void actionPerformed(ActionEvent e) {
                    if(e.getSource() == b3) {
                    if(jl1.getText().equals("学号: ")) {
                        jl1.setText("职工号:");
                        jl6.setText("工作部门:");
                        jtf2.setText("教工");
                    }
                    else if(jl1.getText().equals("职工号:")) {
                        jl1.setText("学号: ");
                        jl6.setText("班级: ");
                        jtf2.setText("学生");
                    }
                }
                }
            });
            this.setVisible(true);
        }
        private void addListener() {
            add = new HandleAddDialog();
            add.setView(this);
            b1.addActionListener(add);//添加监视器,负责添加单词
            b2.addActionListener(add);
        }
}

123

HandleAddDialog如何实现的