m0_58525237 2021-06-19 22:37 采纳率: 50%
浏览 77
已结题

java简单实现增删查改交互界面,设置后按钮但没反应,该如何修改/增加代码?

主交互界面截图和代码: 

 

package com;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class M {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
   	 // TODO Auto-generated method stub
         Guanli m = new Guanli();     
    }
}

class Guanli extends JFrame{
    JButton b1;
    JButton b2;
    public Guanli(){
        setSize(550,370);
        Toolkit tk=getToolkit();
        Dimension d1=tk.getScreenSize();
        int w=(int)d1.getWidth();
        int h=(int)d1.getHeight();
        setLocation(w/2-550/2, h/2-370/2);
        setVisible(true);
        setTitle("信息管理系统");

        Container cp=getContentPane();                                    
        ((JPanel)cp).setOpaque(false);                                     
        cp.setLayout(null);            
        
        JLabel imgLable=new JLabel();
            JLabel j2=new JLabel("***欢迎登陆信息管理系统***");
            JLabel j1=new JLabel("~~请在左侧选择所做的操作~~");
    JButton b1=new JButton("查询");
    JButton b2=new JButton("取消");
    JButton b3=new JButton("修改");
    JButton b4=new JButton("增添");
    JButton b5=new JButton("删除");
    JTextArea t3=new JTextArea(150,150);
      cp.add(j2);
       j2.setBounds(220,110,190,25);
        cp.add(j1);
        j1.setBounds(220,150,190,25);
    cp.add(b1);
    b1.setBounds(0, 70, 90, 25);
    cp.add(b2);
    b2.setBounds(250, 250, 70, 25);
    cp.add(b4);
    b4.setBounds(0,110,90,25);
    cp.add(b3);
    b3.setBounds(0,150,90,25);
    cp.add(b5);
    b5.setBounds(0,190,90,25);
    
    b2.addActionListener(new ActionListener() {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO 自动生成的方法存根
            if(e.getActionCommand().equals("取消")){
               System.exit(0);
            }
        }
    });
    
    b1.addActionListener(new ActionListener() {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO 自动生成的方法存根
            new Select();
        }
    });
    
    
    b3.addActionListener(new ActionListener() {
    
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO 自动生成的方法存根
            new Update();
        }
    });
    
    b4.addActionListener(new ActionListener() {
    
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO 自动生成的方法存根
            new Insert();
        }
    });
    
    b5.addActionListener(new ActionListener() {
    
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO 自动生成的方法存根
            new Delete();
        }
    });
  }
}

比如更新/改,先看更新/改的代码,能做出来这一个应该就能做出来其他3个:

package com;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.awt.FileDialog;
import java.awt.Font;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.io.FileOutputStream;
import javax.swing.JPasswordField;


class UpdateStu {
    // 获取数据库连接
    private Connection conn;
    public Connection getConn() {
        try {
            Class.forName("com.mysql.jdbc.Driver"); // 加载数据库驱动
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        String url = "jdbc:mysql://localhost:3306/study 0027?useUnicode=true&characterEncoding=utf-8&useSSL=false"; // 连接数据库URL
        String userName = "root"; // 连接数据库的用户名
        String passWord = "1234"; // 连接数据库密码
        try {
            conn = DriverManager.getConnection(url, userName, passWord); // 获取数据库连接
            if (conn != null) {
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn; // 返回Connection对象
    }
    //定义更新tb_stu表方法

public void updateStu(Stu stu){
    conn = getConn();   //获取数据库连接
    try {
        PreparedStatement statement = conn.prepareStatement("update student set name = ?,sex = ?,grade = ?,specialty = ? where id = ?");//定义更新SQL语句
        statement.setString(1, stu.getName());  //设置预处理语句参数
        statement.setString(2, stu.getSex());
        statement.setString(3,stu.getGrade());
        statement.setString(4, stu.getSpecialty());
        statement.setInt(5, stu.getId());
        statement.execute();    //执行预处理语句
    } catch (Exception e) {            
        e.printStackTrace();
    }        
}
    
    //定义查询所有同学信息方法
    public List selectStu(){
        conn = getConn();
        Statement statement;
        List list = new ArrayList<Stu>();
        try {
            statement = conn.createStatement();
            ResultSet rest = statement.executeQuery("select * from student");
            while(rest.next()){
                Stu stu = new Stu();
                stu.setId(rest.getInt(1));
                stu.setName(rest.getString(2));
                stu.setGrade(rest.getString("grade"));
                stu.setSex(rest.getString("sex"));
                stu.setSpecialty(rest.getString(5));
                list.add(stu);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       return list;        
    }
    //定义按照指定编号查询学生信息方法
    public Stu selectStu(int id){
        conn = getConn();
        Statement statement;
        Stu stu = new Stu();
        try {         
            statement = conn.createStatement();
            ResultSet rest = statement.executeQuery("select * from student where id = "+id);
            while(rest.next()){              
                stu.setId(rest.getInt(1));
                stu.setName(rest.getString(2));
                stu.setGrade(rest.getString("grade"));
                stu.setSex(rest.getString("sex"));
                stu.setSpecialty(rest.getString(5));          
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       return stu;        
    }
}



 class UpdateFrame extends JFrame {
    
    private JPanel contentPane;
    private JTextField idTextField;
    private JTextField nameTextField;
    private JTextField gradeTextField;
    private JTextField specialityTextField;
    private Stu stu = null;
    private  JComboBox sexComboBox;

    
    /**
     * Create the frame.
     */
    public UpdateFrame() {

        setBounds(100, 100, 409, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        File file = new File("file.txt");
     
        try {
            FileInputStream fin = new FileInputStream(file);
            int count =  fin.read();
            System.out.println(count);
            UpdateStu updateStu = new UpdateStu();
            stu = updateStu.selectStu(count);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        JPanel panel = new JPanel();
        panel.setBounds(0, 0, 393, 262);
        contentPane.add(panel);
        panel.setLayout(null);
        
        JLabel IDLabel = new JLabel("编号:");
        IDLabel.setBounds(55, 21, 54, 15);
        panel.add(IDLabel);
        
        idTextField = new JTextField();
        idTextField.setText(stu.getId()+"");
        idTextField.setEditable(false);
        idTextField.setBounds(101, 18, 216, 21);
        panel.add(idTextField);
        idTextField.setColumns(10);
        
        JLabel nameLabel = new JLabel("姓名:");
        nameLabel.setBounds(55, 57, 48, 15);
        panel.add(nameLabel);
        
        nameTextField = new JTextField();
        nameTextField.setText(stu.getName());
        nameTextField.setBounds(101, 54, 216, 21);
        panel.add(nameTextField);
        nameTextField.setColumns(10);
        
        JLabel seLlabel = new JLabel("性别:");
        seLlabel.setBounds(55, 95, 54, 15);
        panel.add(seLlabel);
        String sex[] = new String[]{"男","女"};
        sexComboBox = new JComboBox(sex);
        sexComboBox.setSelectedItem(stu.getSex());
        sexComboBox.setBounds(101, 92, 67, 21);
        panel.add(sexComboBox);
        
        JLabel gradeLabel = new JLabel("年级:");
        gradeLabel.setBounds(55, 132, 54, 15);
        panel.add(gradeLabel);
        
        gradeTextField = new JTextField();
        gradeTextField.setText(stu.getGrade());
        gradeTextField.setBounds(101, 129, 216, 21);
        panel.add(gradeTextField);
        gradeTextField.setColumns(10);
        
        JLabel specialityLabel = new JLabel("专业:");
        specialityLabel.setBounds(55, 175, 54, 15);
        panel.add(specialityLabel);
        
        specialityTextField = new JTextField();
        specialityTextField.setText(stu.getSpecialty());
        specialityTextField.setBounds(102, 172, 215, 21);
        panel.add(specialityTextField);
        specialityTextField.setColumns(10);
        
        JButton updateButton = new JButton("修改");
        updateButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_updateButton_actionPerformed(arg0);
            }
        });
        updateButton.setBounds(101, 214, 67, 23);
        panel.add(updateButton);
        
        JButton closeButton = new JButton("关闭");
        closeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_closeButton_actionPerformed(arg0);
            }
        });
        closeButton.setBounds(208, 214, 67, 23);
        panel.add(closeButton);
    }
    //修改按钮的单击事件
    protected void do_updateButton_actionPerformed(ActionEvent arg0) {
        String name = nameTextField.getText();
        String sex = sexComboBox.getSelectedItem().toString();
        String grade = gradeTextField.getText();
        String speciality = specialityTextField.getText();
        stu.setName(name);
        stu.setSex(sex);
        stu.setGrade(grade);
        stu.setSpecialty(speciality);
        UpdateStu updateStu = new UpdateStu();
        updateStu.updateStu(stu);
        JOptionPane.showMessageDialog(getContentPane(), 
                "数据修改成功!", "信息提示框", JOptionPane.WARNING_MESSAGE);

    }
    //关闭按钮的单击事件
    protected void do_closeButton_actionPerformed(ActionEvent arg0) {
        this.setVisible(false);
    }
}


public class Update extends JFrame {
    
    private JPanel contentPane;
    private JTable table;
    private LocalTableModel model = new LocalTableModel();
    private UpdateStu updateStu = new UpdateStu();
    private JPasswordField passwordField;
    
    /**
     * Launch the application.
     */

    /**
     * Create the frame.
     */
    public Update() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        
        JPanel panel = new JPanel();
        panel.setBounds(0, 0, 434, 262);
        contentPane.add(panel);
        panel.setLayout(null);
        
        JLabel messageLabel = new JLabel("更新指定记录");
        messageLabel.setFont(new Font("华文琥珀", Font.BOLD | Font.ITALIC, 18));
        messageLabel.setBounds(136, 22, 181, 33);
        panel.add(messageLabel);
        
        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(27, 65, 380, 145);
        panel.add(scrollPane);
        
        table = new JTable(model);
        List list = updateStu.selectStu();
        for(int i = 0;i<list.size();i++){
            Stu stu = (Stu)list.get(i); 
            model.addRow(new Object[] { stu.getId(), stu.getName(),
                   stu.getSex(),stu.getSpecialty(),stu.getGrade()});
        }       
        scrollPane.setViewportView(table);
        
        passwordField = new JPasswordField();
        scrollPane.setColumnHeaderView(passwordField);
        
        JButton updateButton = new JButton("修改");
        updateButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_updateButton_actionPerformed(arg0);
            }
        });
        updateButton.setBounds(113, 220, 76, 23);
        panel.add(updateButton);
        
        JButton closeButton = new JButton("关闭");
        closeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                do_closeButton_actionPerformed(arg0);
            }
        });
        closeButton.setBounds(228, 220, 76, 23);
        panel.add(closeButton);
    }
    //修改按钮的单击事件
    protected void do_updateButton_actionPerformed(ActionEvent arg0) {
        int row = table.getSelectedRow();
        File file = new File("file.txt");
        try {
            file.createNewFile();
            FileOutputStream out = new FileOutputStream(file);
            out.write((row+1));
            out.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        UpdateFrame updateFrame = new UpdateFrame();
        updateFrame.setVisible(true);
        System.out.println(table.getSelectedRow());
    }
    //关闭按钮的单击事件
    protected void do_closeButton_actionPerformed(ActionEvent arg0) {
            System.exit(0);
    }
}



       增删查改各自加上主程序的话都可以正常运行、实现功能。所以想给它们加上一个总界面(总框架),这样实现4个操作更方便、界面更友好。但总界面做出来后好像联系不上4个操作(按钮没反应),感觉是不是少些了什么?(新学java!如果这个问题有点憨的话,别嫌弃俺菜!认真问!)

  • 写回答

1条回答 默认 最新

  • 筷头哥 2021-06-19 22:46
    关注

    在你给按钮添加事件的时候,就是在addActionListener里的那个匿名内部类中,可以写具体的逻辑,可以将数据库操作的结果拿到这里进行处理并在界面中反馈出来

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器