普通网友 2021-07-08 22:06 采纳率: 12.5%
浏览 30
已结题

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

这个是视图

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);
        }
}

这个是控制器

package dialog;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import People.People;
public class HandleAddDialog  extends JDialog implements ActionListener{
    AddDialog view;
    public void setView(AddDialog add) {
        this.view = add;
    }
    @Override
    public void actionPerformed(ActionEvent e) {//实现监视器
        if (e.getSource() == view.b1) {
            ArrayList<People> list = new ArrayList<People>();
            list = MainFrame.list;
            String s1 = view.jtf1.getText();//读取学号
            String s2 = view.jtf5.getText();//读取姓名
            String s3 = view.jtf2.getText();//读取身份
            String s4 = view.jtf6.getText();//读取班级
            String s5 = view.jtf3.getText();//读取用电量
            String s6 = view.jtf7.getText();//读取用水量
            String s7 = view.jtf4.getText();//读取电话
            String s8 = view.jtf8.getText();//读取是否缴费
            if (s1.equals("") || s2.equals("")|| s3.equals("")|| s4.equals("")|| s5.equals("")|| s6.equals("")|| s7.equals("")||s8.equals("")) {
                JOptionPane.showMessageDialog(this, "信息不能为空!");
                return;//判断是否完全输入数据
            }
            for (int i = 0; i < list.size(); i++) {
                if(s1.equals(list.get(i).getNumber())) {
                    JOptionPane.showMessageDialog(this, "学号/职工号不能重复");
                    return;//判断是否是相同学号/职工号
                }
            }
            if(s8.equals("是")||s8.equals("否")) {
                People s = new People(s1, s2, s3, s4, s5, s6, s7,s8);
                MainFrame.list.add(s);
                JOptionPane.showMessageDialog(this, "添加信息成功!");
                MainFrame.save();
                dispose();
            }else {
                JOptionPane.showMessageDialog(this, "请正确输入缴费信息");//判断缴费信息是否正确填写
            }
        } else if (e.getSource() == view.b2) {
            view.dispose();//退出
        }
    }
}

  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2021-07-08 22:09
    关注

    你能否在事件方法中输出一下e.getSource()的值呢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月28日
  • 已采纳回答 1月20日
  • 创建了问题 7月8日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭