⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recruitpanel.java~20~

📁 会员管理系统的一个子模块
💻 JAVA~20~
字号:
package memberpane;

import javax.swing.*;
import java.awt.Rectangle;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.SQLException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;
import javax.swing.table.DefaultTableModel;

public class RecruitPanel extends JPanel {
    /**
     * 构造器
     * @param table JTable: 该面板所依赖的表格对象
     */
    public RecruitPanel(JTable table) {
        this.table = table;
        try {
            jbInit();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        this.setLayout(null);
        jLabel1.setText("会员编号");
        jLabel1.setBounds(new Rectangle(20, 25, 56, 23));
        jLabel2.setText("会员姓名");
        jLabel2.setBounds(new Rectangle(20, 63, 56, 23));
        jLabel3.setText("充值金额");
        jLabel3.setBounds(new Rectangle(20, 101, 56, 23));
        jLabel4.setText("现有金额");
        jLabel4.setBounds(new Rectangle(20, 139, 56, 23));
        vipidField.setEditable(false);
        vipidField.setBounds(new Rectangle(83, 25, 82, 23));
        nameField.setEditable(false);
        nameField.setBounds(new Rectangle(83, 63, 82, 23));
        recruitField.setBounds(new Rectangle(83, 101, 82, 23));
        recruitField.addKeyListener(new RecruitPanel_recruitField_keyAdapter(this));
        curMoneyField.setEditable(false);
        curMoneyField.setBounds(new Rectangle(83, 139, 82, 23));
        okButton.setBounds(new Rectangle(20, 219, 68, 28));
        okButton.setText("确定");
        okButton.addActionListener(new RecruitPanel_okButton_actionAdapter(this));
        cancelButton.setBounds(new Rectangle(97, 219, 68, 28));
        cancelButton.setText("取消");
        cancelButton.addActionListener(new
                                       RecruitPanel_cancelButton_actionAdapter(this));
        jLabel5.setText("充后金额");
        jLabel5.setBounds(new Rectangle(20, 177, 56, 23));
        sumField.setEditable(false);
        sumField.setBounds(new Rectangle(83, 177, 82, 23));
        this.add(jLabel1);
        this.add(vipidField);
        this.add(jLabel2);
        this.add(jLabel3);
        this.add(jLabel4);
        this.add(jLabel5);
        this.add(nameField);
        this.add(recruitField);
        this.add(curMoneyField);
        this.add(sumField);
        this.add(cancelButton);
        this.add(okButton);

        int selectedRow = table.getSelectedRow();

        if(selectedRow != -1){//当确实有一行被选中的时候,可以对该行进行修改
            Connection conn = null;
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            } catch (ClassNotFoundException ex) {
            }
            String dburl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=db.mdb";
            try {
                conn = DriverManager.getConnection(dburl);
            } catch (SQLException ex1) {
            }

            Statement stmtQuery = null;
            ResultSet  rs = null;
            try {
                stmtQuery = conn.createStatement();

                ID = (String)table.getValueAt(selectedRow,0);//ID赋值为当前行的第0位上的值,即会员的ID
                rs = stmtQuery.executeQuery("select * from VIP where ID =" + ID + "");
                rs.next();

                //获得相应字段值
                String Mname = rs.getString("Name");
                String Mvipid = rs.getString("VIPID");
                String Mcurmoney = rs.getString("CurMoney");

                //设置面板上相应会员信息值
                nameField.setText(Mname);
                vipidField.setText(Mvipid);
                curMoneyField.setText(Mcurmoney);

                conn.close();
            }catch (SQLException ex) {
                System.out.println(ex.getStackTrace());
            }
        } else {
        }

    }

    JLabel jLabel1 = new JLabel();
    JLabel jLabel2 = new JLabel();
    JLabel jLabel3 = new JLabel();
    JLabel jLabel4 = new JLabel();
    JTextField vipidField = new JTextField();
    JTextField nameField = new JTextField();
    JTextField recruitField = new JTextField();
    JTextField curMoneyField = new JTextField();
    JButton okButton = new JButton();
    JButton cancelButton = new JButton();
    JLabel jLabel5 = new JLabel();
    JTextField sumField = new JTextField();
    JTable table = null;
    private String ID = "-1";//记录将要修改的会员的ID号,如果为-1,则说明尚无选定的会员。选择String类型是为了符合其数据库类型

    public void okButton_actionPerformed(ActionEvent e) {
        if(table.getSelectedRow() == -1){//如果没有被选中的行,直接退出
            cancelButton_actionPerformed(e);
            return;
        }
        //获取充后金额值
        String Mname = nameField.getText();

        String Msum = sumField.getText().length() == 0 ? "0" :sumField.getText();


        //连接数据库
        Connection conn = null;
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch (ClassNotFoundException ex) {
        }
        String dburl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=db.mdb";
        try {
            conn = DriverManager.getConnection(dburl);
        } catch (SQLException ex1) {
        }

        Statement stmtUpdate = null;
        /*
        try {
            stmtUpdate = conn.createStatement();

            //更新数据库
            stmtUpdate.executeUpdate("update VIP set Name = '" + Mname + "',"
                                     +"Sex = '" + Msex + "',"
                                     +"MinZu = '" + Mminzu + "',"
                                     +"VIPID = '" + Mvipid + "',"
                                     +"VIPKind = '" + Mvipkind + "',"
                                     +"Birthday = '" + Mbirthday + "',"
                                     +"Unit = '" + Munit + "',"
                                     +"Address = '" + Maddress + "',"
                                     +"postcode = '" + Mpostcode + "',"
                                     +"Phone = '" + Mphone + "',"
                                     +"Occu = '" + Moccu + "',"
                                     +"MovePhone = '" + Mmovephone + "',"
                                     +"CertID = '" + Mcertid + "',"
                                     +"Email = '" + Memail + "',"
                                     +"Valid = '" + Mvalid + "',"
                                     +"Pass = '" + Mpass + "',"
                                     +"Grade = '" + Mgrade + "',"
                                     +"EnterDate = '" + MenterDate + "',"
                                     +"EndDate = '" + Menddate + "',"
                                     +"BeginMoney = '" + Mbeginmoney + "',"
                                     +"SumCost = '" + Msumcost + "',"
                                     +"BeginPoints = '" + Mbeginpoints + "',"
                                     +"CurPoints = '" + Mcurpoints + "',"
                                     +"SumPoints = '" + Msumpoints + "',"
                                     +"Mem = '" + Mremark + "'"
                                     +" where ID = "+ID);

            //更新表,得到当前选中的表的一行,修改其中每列的值
            DefaultTableModel tm = (DefaultTableModel)table.getModel();
            int selectedRow = table.getSelectedRow();

            tm.setValueAt(Mname,selectedRow,1);
            tm.setValueAt(Mvipid,selectedRow,2);
            tm.setValueAt(Msex,selectedRow,3);
            tm.setValueAt(Mgrade,selectedRow,4);
            tm.setValueAt(Mphone,selectedRow,5);
            tm.setValueAt(Mmovephone,selectedRow,6);
            tm.setValueAt(Mbirthday,selectedRow,7);
            tm.setValueAt(Mvalid,selectedRow,8);
            tm.setValueAt(Mpass,selectedRow,9);
            tm.setValueAt(MenterDate,selectedRow,10);
            tm.setValueAt(Menddate,selectedRow,11);
            tm.setValueAt(Mbeginmoney,selectedRow,12);
            tm.setValueAt(Mcurmoney,selectedRow,13);
            tm.setValueAt(Msumcost,selectedRow,14);
            tm.setValueAt(Mbeginpoints,selectedRow,15);
            tm.setValueAt(Mcurpoints,selectedRow,16);
            tm.setValueAt(Msumpoints,selectedRow,17);
            tm.setValueAt(Mminzu,selectedRow,18);
            tm.setValueAt(Munit,selectedRow,19);
            tm.setValueAt(Maddress,selectedRow,20);
            tm.setValueAt(Mpostcode,selectedRow,21);
            tm.setValueAt(Moccu,selectedRow,22);
            tm.setValueAt(Mcertid,selectedRow,23);
            tm.setValueAt(Memail,selectedRow,24);

            table.repaint();
            conn.close();
        }catch (SQLException ex) {
            System.out.println(ex.getStackTrace());
        }
*/
        //退出
        cancelButton_actionPerformed(e);

    }

    public void cancelButton_actionPerformed(ActionEvent e) {
        //通过当前panel得到其所依附的JFrame,需要四次getParent()
        //从底层向上分别为:RecruitPanel->JPanel->JLayeredPane->JRootPane->JFrame
        JFrame frame = (JFrame)this.getParent().getParent().getParent().getParent();
        frame.setVisible(false);
        frame.dispose();
    }
    /**
     * 随时根据“充值金额”文本框的输入值,更改“充后金额”的值
     * @param e KeyEvent: 键抬起,说明有一次输入
     */
    public void recruitField_keyReleased(KeyEvent e) {
        //获取现有金额
        String curMoney = curMoneyField.getText();
        double cur = 0.0;
        try{
            cur = Double.parseDouble(curMoney);
        }catch(NumberFormatException fe){
        }
        //获取充值金额
        String recruitMoney = recruitField.getText();
        double recruit = 0.0;
        //若输入为空,不做任何事情
        if(recruitMoney.equals(""))
            return;
        try{//如果输入为数字,则更新“充后金额”的值
            recruit = Double.parseDouble(recruitMoney);
            Double sum = recruit + cur;
            sumField.setText(sum.toString());
        }catch(NumberFormatException fe){//如果输入不是数字,则显示错误信息
            JOptionPane.showMessageDialog(null, "请输入数字信息!", "错误消息", JOptionPane.ERROR_MESSAGE);
        }
    }
}

class RecruitPanel_recruitField_keyAdapter
    extends KeyAdapter {
    private RecruitPanel adaptee;
    RecruitPanel_recruitField_keyAdapter(RecruitPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void keyReleased(KeyEvent e) {
        adaptee.recruitField_keyReleased(e);
    }
}

class RecruitPanel_cancelButton_actionAdapter
    implements ActionListener {
    private RecruitPanel adaptee;
    RecruitPanel_cancelButton_actionAdapter(RecruitPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.cancelButton_actionPerformed(e);
    }
}

class RecruitPanel_okButton_actionAdapter
    implements ActionListener {
    private RecruitPanel adaptee;
    RecruitPanel_okButton_actionAdapter(RecruitPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.okButton_actionPerformed(e);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -