WindowsBuilder管家婆记账软件

首先根据数据库的内容创建一个model,赋予所有键名,并获得get和set方法,为了以后检查方便,最好再设置toString方法

package com.gjp.Model;

public class Model {
    private int zwid;// id
    private String flname;// 分类名称
    private double money;// 金额
    private String zhangHu;// 账户名称
    private String createtime;// 创建时间
    private String description;

    public int getZwid() {
        return zwid;
    }

    public void setZwid(int zwid) {
        this.zwid = zwid;
    }

    public String getFlname() {
        return flname;
    }

    public void setFlname(String flname) {
        this.flname = flname;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public String getZhangHu() {
        return zhangHu;
    }

    public void setZhangHu(String zhangHu) {
        this.zhangHu = zhangHu;
    }

    public String getCreatetime() {
        return createtime;
    }

    public void setCreatetime(String createtime) {
        this.createtime = createtime;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "Model [zwid=" + zwid + ", flname=" + flname + ", money=" + money + ", zhangHu=" + zhangHu
                + ", createtime=" + createtime + ", description=" + description + "]";
    }


}

链接数据库使用到JDBCUtils工具类,这里使用使用工具类进行稍微的修改,因为要存储汉子,utf8格式

package com.gjp.Utils;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

public class JDBCUtils {
    public static final String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://localhost:3306/gjp?useUnicode=true&characterEncoding=UTF-8";
    public static final String USERNAME = "root";
    public static final String PASSWORD = "liuyang";

    private static BasicDataSource dataSource = new BasicDataSource();
    static {
        dataSource.setDriverClassName(DRIVER_CLASS_NAME);
        dataSource.setUrl(URL);
        dataSource.setUsername(USERNAME);
        dataSource.setPassword(PASSWORD);
    }

    public static DataSource getDataSource() {
        return dataSource;
    }
}

这个程序主要是实现对数据库的增删改查,在Dao层中实现数据库的操作

package com.gjp.Dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.gjp.Model.Model;
import com.gjp.Utils.JDBCUtils;

public class ZhangWuDao {

    QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());

    public List<Model> selectAll() throws SQLException{

        String sql = "select * from gjp_zhangwu";   
        return qr.query(sql, new BeanListHandler<Model>(Model.class));

    }

    public List<Model> select(String start,String end) throws SQLException{
        String sql = "select * from gjp_zhangwu where createtime between ? AND ?";
        Object[] params = {start,end};
        return qr.query(sql, new BeanListHandler<Model>(Model.class), params);
    }

    public void edit(int id,String flname,Double money,String zhangHu,String time,String des) throws SQLException{
        String sql = "insert into gjp_zhangwu values(?,?,?,?,?,?)";
        Object[] param = {id,flname,money,zhangHu,time,des};
        qr.update(sql, param);
    }

    public void delAll() throws SQLException{
        String sql = "delete from gjp_zhangwu";
        qr.update(sql);
    }

    public void delById(int id) throws SQLException{
        String sql = "delete from gjp_zhangwu where zwid = ?";
        qr.update(sql,id);
    }

    public void add(String flname,double money,String zhangHu,String time,String des) throws SQLException{
        String sql = "insert into gjp_zhangwu(flname,money,zhangHu,createtime,description) values (?,?,?,?,?)";
        Object[] param = {flname,money,zhangHu,time,des};
        qr.update(sql, param);

    }

}

在Service层中实现对数据库的各种操作

package com.gjp.Service;

import java.sql.SQLException;
import java.util.List;

import com.gjp.Dao.ZhangWuDao;
import com.gjp.Model.Model;

public class ZhangWuService {
    ZhangWuDao zhangwuDao = new ZhangWuDao();

    public List<Model> selectAll() throws SQLException{
        return zhangwuDao.selectAll();
    }

    public List<Model> select(String start,String end) throws SQLException{
        return zhangwuDao.select(start, end);
    }

    public void edit(int id,String flname,Double money,String zhangHu,String time,String des) throws SQLException{
        zhangwuDao.edit(id, flname, money, zhangHu, time, des);
    }

    public void delAll() throws SQLException{
        zhangwuDao.delAll();
    }

    public void delById(int id) throws SQLException{
        zhangwuDao.delById(id);
    }

    public void add(String flname,double money,String zhangHu,String time,String des) throws SQLException{

        zhangwuDao.add(flname, money, zhangHu, time, des);
    }
}

接下来就是各个界面的具体内容

1.主页面 这里没有什么要说的,就是一个简单的可以选择功能的跳转窗口

package com.gjp.View;

import java.awt.EventQueue;

import javax.swing.JFrame;
import java.awt.Toolkit;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.awt.Font;
import java.awt.Color;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.File;
import java.awt.event.ActionEvent;

public class Index {

    private JFrame frame;
    private final JLabel lblNewLabel = new JLabel("");

    /**
     * Launch the application.
     */
    public static void index() {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Index window = new Index();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Index() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {

        frame = new JFrame();
        frame.setTitle("管家婆记账系统");
        frame.setResizable(false);
        frame.setBounds(550, 200, 892, 589);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JLabel label = new JLabel("欢迎进入管家婆记账软件");
        label.setForeground(Color.DARK_GRAY);
        label.setFont(new Font("宋体", Font.PLAIN, 45));
        label.setBounds(174, 42, 532, 55);
        frame.getContentPane().add(label);

        JButton btnNewButton = new JButton("好的");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                Function function = new Function();
                function.function();
                frame.dispose();
            }
        });
        btnNewButton.setFont(new Font("宋体", Font.PLAIN, 30));
        btnNewButton.setBounds(701, 476, 171, 55);
        frame.getContentPane().add(btnNewButton);
        lblNewLabel.setIcon(new ImageIcon("F:\\Eclipse_Java\\gjp.jpg"));
        lblNewLabel.setBounds(0, 0, 885, 553);
        frame.getContentPane().add(lblNewLabel);
    }
}

2.查询窗口,这个窗口实现了查询和条件查询,具体的实现过程就是在窗口中加一个JTable插件在其中设置他的model值,条件查询时,修改其中的model即可,注意这个窗口中查出来的内容不能修改。

package com.gjp.View;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.sound.midi.SysexMessage;
import javax.swing.ImageIcon;
import java.awt.Font;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import com.gjp.Model.Model;
import com.gjp.Service.ZhangWuService;

import java.awt.Color;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JTable;
import java.awt.event.ActionListener;
import java.awt.event.WindowStateListener;
import java.awt.event.ActionEvent;

public class Check {

    private String[] Names = { "id", "用途", "金额", "账户", "创建时间", "说明" };
    private JFrame frame;
    ZhangWuService zhangwu = new ZhangWuService();
    List<Model> list1 = zhangwu.selectAll();
    private JTextField textField;
    private JTextField textField_2;
    private JTextField textField_3;
    private JTextField textField_1;
    private JTextField textField_4;
    private JTextField textField_5;
    private Object[][] data = new Object[list1.size()][Names.length];
    private JTable table;
    private String s1 = null;
    private String s2 = null;
    private String s3 = null;
    private String s4 = null;
    private String s5 = null;
    private String s6 = null;
    private isNumber isnumber = new isNumber();

    /**
     * Launch the application.
     */
    public static void check() {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Check window = new Check();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     * 
     * @throws SQLException
     */
    public Check() throws SQLException {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     * 
     * @throws SQLException
     */
    private void initialize() throws SQLException {
        frame = new JFrame();
        frame.setResizable(false);
        frame.setBounds(550, 200, 892, 589);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JLabel label = new JLabel("输入时间筛选:");
        label.setFont(new Font("宋体", Font.PLAIN, 25));
        label.setBounds(44, 47, 184, 30);
        frame.getContentPane().add(label);

        textField = new JTextField();
        textField.setFont(new Font("宋体", Font.PLAIN, 20));
        textField.setBounds(243, 48, 39, 27);
        frame.getContentPane().add(textField);
        textField.setColumns(10);

        JLabel label_1 = new JLabel("年");
        label_1.setFont(new Font("宋体", Font.PLAIN, 20));
        label_1.setBounds(280, 50, 32, 25);
        frame.getContentPane().add(label_1);

        textField_2 = new JTextField();
        textField_2.setFont(new Font("宋体", Font.PLAIN, 20));
        textField_2.setColumns(10);
        textField_2.setBounds(306, 48, 39, 27);
        frame.getContentPane().add(textField_2);

        JLabel label_2 = new JLabel("月");
        label_2.setForeground(Color.BLACK);
        label_2.setFont(new Font("宋体", Font.PLAIN, 20));
        label_2.setBounds(349, 50, 32, 25);
        frame.getContentPane().add(label_2);

        textField_3 = new JTextField();
        textField_3.setFont(new Font("宋体", Font.PLAIN, 20));
        textField_3.setColumns(10);
        textField_3.setBounds(371, 48, 39, 27);
        frame.getContentPane().add(textField_3);

        JLabel label_3 = new JLabel("日");
        label_3.setFont(new Font("宋体", Font.PLAIN, 20));
        label_3.setBounds(412, 50, 32, 25);
        frame.getContentPane().add(label_3);

        JLabel lblNewLabel_1 = new JLabel("20");
        lblNewLabel_1.setFont(new Font("宋体", Font.PLAIN, 20));
        lblNewLabel_1.setBounds(222, 53, 32, 18);
        frame.getContentPane().add(lblNewLabel_1);

        JLabel label_4 = new JLabel("—");
        label_4.setFont(new Font("宋体", Font.PLAIN, 35));
        label_4.setForeground(Color.BLACK);
        label_4.setBounds(435, 52, 46, 18);
        frame.getContentPane().add(label_4);

        JLabel label_5 = new JLabel("20");
        label_5.setFont(new Font("宋体", Font.PLAIN, 20));
        label_5.setBounds(484, 53, 32, 18);
        frame.getContentPane().add(label_5);

        textField_1 = new JTextField();
        textField_1.setFont(new Font("宋体", Font.PLAIN, 20));
        textField_1.setColumns(10);
        textField_1.setBounds(505, 47, 39, 27);
        frame.getContentPane().add(textField_1);

        JLabel label_6 = new JLabel("年");
        label_6.setFont(new Font("宋体", Font.PLAIN, 20));
        label_6.setBounds(545, 50, 32, 25);
        frame.getContentPane().add(label_6);

        textField_4 = new JTextField();
        textField_4.setFont(new Font("宋体", Font.PLAIN, 20));
        textField_4.setColumns(10);
        textField_4.setBounds(565, 47, 39, 27);
        frame.getContentPane().add(textField_4);

        JLabel label_7 = new JLabel("月");
        label_7.setForeground(Color.BLACK);
        label_7.setFont(new Font("宋体", Font.PLAIN, 20));
        label_7.setBounds(605, 50, 32, 25);
        frame.getContentPane().add(label_7);

        textField_5 = new JTextField();
        textField_5.setFont(new Font("宋体", Font.PLAIN, 20));
        textField_5.setColumns(10);
        textField_5.setBounds(629, 47, 39, 27);
        frame.getContentPane().add(textField_5);

        JLabel label_8 = new JLabel("日");
        label_8.setFont(new Font("宋体", Font.PLAIN, 20));
        label_8.setBounds(669, 50, 32, 25);
        frame.getContentPane().add(label_8);

        JButton button = new JButton("筛选");

        button.setFont(new Font("宋体", Font.PLAIN, 20));
        button.setBounds(734, 47, 103, 32);
        frame.getContentPane().add(button);

        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(0, 143, 874, 401);
        frame.getContentPane().add(scrollPane);

        /**
        *这是查询窗口不能修改,重写table中isCellEdittable方法
        */
        table = new JTable() {
            public boolean isCellEditable(int row, int col) {
                return false;
            }
        };
        table.setFont(new Font("宋体", Font.PLAIN, 22));
        table.setBounds(0, 143, 874, 401);
        frame.getContentPane().add(table);
        DefaultTableModel model = new DefaultTableModel(query(list1), Names);
        table.setModel(model);
        table.setRowHeight(30);

        JButton button_1 = new JButton("返回");
        button_1.setFont(new Font("宋体", Font.PLAIN, 20));
        button_1.setBounds(0, 0, 75, 30);
        frame.getContentPane().add(button_1);

        JLabel label_9 = new JLabel("");
        label_9.setFont(new Font("宋体", Font.PLAIN, 23));
        label_9.setBounds(494, 88, 184, 42);
        frame.getContentPane().add(label_9);

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                if (textField.getText().length() <= 1) {
                    s1 = "0" + textField.getText();
                } else {
                    s1 = textField.getText();
                }
                if (textField_1.getText().length() <= 1) {
                    s2 = "0" + textField_1.getText();
                } else {
                    s2 = textField_1.getText();
                }
                if (textField_2.getText().length() <= 1) {
                    s3 = "0" + textField_2.getText();
                } else {
                    s3 = textField_2.getText();
                }
                if (textField_3.getText().length() <= 1) {
                    s4 = "0" + textField_3.getText();
                } else {
                    s4 = textField_3.getText();
                }
                if (textField_4.getText().length() <= 1) {
                    s5 = "0" + textField_4.getText();
                } else {
                    s5 = textField_4.getText();
                }
                if (textField_5.getText().length() <= 1) {
                    s6 = "0" + textField_5.getText();
                } else {
                    textField_5.getText();
                }
                if(isnumber.isNumber(s1) && isnumber.isNumber(s2) && isnumber.isNumber(s3) && isnumber.isNumber(s4) && isnumber.isNumber(s5) && isnumber.isNumber(s6)){
                String start = "20" + s1 + "-" + s3 + "-" + s4;
                String end = "20" + s2 + "-" + s5 + "-" + s6;

                if ("".equals(textField.getText()) && "".equals(textField_1.getText()) && "".equals(textField_2.getText())
                        && "".equals(textField_3.getText()) && "".equals(textField_4.getText()) && "".equals(textField_5.getText())){
                    for(int p = 0;p < list1.size();p++){
                        model.removeRow(0);
                    }
                    for(int i = 0;i < list1.size();i++){
                        model.addRow(data[i]);
                        }
                }   
                else if ("".equals(textField.getText()) || "".equals(textField_1.getText()) || "".equals(textField_2.getText())
                        || "".equals(textField_3.getText()) || "".equals(textField_4.getText()) || "".equals(textField_5.getText())) {
                    label_9.setText("时间格式不正确!");
                } else {
                    int t1 = Integer.parseInt(s1);
                    int t2 = Integer.parseInt(s3);
                    int t3 = Integer.parseInt(s4);
                    int t4 = Integer.parseInt(s2);
                    int t5 = Integer.parseInt(s5);
                    int t6 = Integer.parseInt(s6);
                    if (t1 <= 0 || t1 > 99 || t2 > 12 || t2 <= 0 || t3 <= 0 || t3 > 31 || t4 <= 0 || t4 > 99 || t5 > 12
                            || t5 <= 0 || t6 <= 0 || t6 > 31) {

                        label_9.setText("时间格式不正确!");
                    } else {
                        if (t4 < t1) {
                            label_9.setText("时间格式不正确!");

                        } else {
                            if (t4 == t1 && t5 < t2) {
                                label_9.setText("时间格式不正确!");

                            } else {
                                if (t1 == t4 && t2 == t5 && t6 < t3) {
                                    label_9.setText("时间格式不正确!");

                                } else {
                                    for(int p = 0;p < list1.size();p++){
                                        model.removeRow(0);  //将表格清空,每删除一行原本的下一行就会变成第一行,所以每次删除的都是第一行
                                    }
                                    label_9.setText("");
                                    model.fireTableDataChanged() ;
                                    try {
                                        List<Model> list2 = zhangwu.select(start, end);
                                        //System.out.println(list2);
                                        for(int i = 0;i < list2.size();i++){
                                        model.addRow(data[i]);
                                        }
                                    } catch (SQLException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                }
                            }
                        }
                    }
                }

                System.out.println(start + "\n" + end);
                }else{
                    label_9.setText("请输入数字");
                }
            }
        });

        scrollPane.setViewportView(table);

        JLabel lblNewLabel = new JLabel("");
        lblNewLabel.setIcon(new ImageIcon("F:\\Eclipse_Java\\gjp.jpg"));
        lblNewLabel.setBounds(0, 0, 885, 553);
        frame.getContentPane().add(lblNewLabel);
    }

    public Object[][] query(List<Model> list) throws SQLException {
        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < Names.length; j++) {
                data[i][0] = list.get(i).getZwid();
                data[i][1] = list.get(i).getFlname();
                data[i][2] = list.get(i).getMoney();
                data[i][3] = list.get(i).getZhangHu();
                data[i][4] = list.get(i).getCreatetime();
                data[i][5] = list.get(i).getDescription();
            }
        }
        return data;
    }
}

3.删除 根据id值删除,在这里我封装了一个类isNumber,用来判断id值是否为int类型

package com.gjp.View;

import java.awt.EventQueue;
import java.awt.Font;
import java.sql.SQLException;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import com.gjp.Model.Model;
import com.gjp.Service.ZhangWuService;

import javax.swing.JButton;
import javax.swing.JScrollPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Color;

public class Delete {

    private JFrame frame;
    private JTable table;
    private JLabel lblid;
    private JLabel lblId;
    private JTextField textField;
    private String[] Names = { "id", "用途", "金额", "账户", "创建时间", "说明" };
    ZhangWuService zhangwu = new ZhangWuService();
    List<Model> list1 = zhangwu.selectAll();
    Object[][] data = new Object[list1.size()][Names.length];
    private JLabel label_1;
    private isNumber isnumber = new isNumber();
    private static int con = 0;
    /**
     * Launch the application.
     */
    public static void delete() {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Delete window = new Delete();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     * 
     * @throws SQLException
     */
    public Delete() throws SQLException {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     * 
     * @throws SQLException
     */
    private void initialize() throws SQLException {
        frame = new JFrame();
        frame.setResizable(false);
        frame.setBounds(550, 200, 892, 589);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        table = new JTable();
        table.setFont(new Font("宋体", Font.PLAIN, 22));
        table.setBounds(0, 113, 874, 431);
        table.setRowHeight(30);
        frame.getContentPane().add(table);
        DefaultTableModel model = new DefaultTableModel(query(list1), Names);
         table.setModel(model);

        lblid = new JLabel("请输入id删除");
        lblid.setFont(new Font("宋体", Font.PLAIN, 25));
        lblid.setBounds(34, 26, 176, 34);
        frame.getContentPane().add(lblid);

        lblId = new JLabel("id:");
        lblId.setFont(new Font("宋体", Font.PLAIN, 23));
        lblId.setBounds(280, 53, 72, 27);
        frame.getContentPane().add(lblId);

        textField = new JTextField();
        textField.setFont(new Font("宋体", Font.PLAIN, 23));
        textField.setBounds(316, 58, 86, 24);
        frame.getContentPane().add(textField);
        textField.setColumns(10);


        JButton button = new JButton("删除");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String ids = textField.getText();
                int min = (Integer) model.getValueAt(0, 0);
                int max =  (Integer) model.getValueAt(list1.size()-1, 0);
//              System.out.println(isnumber.isNumber(ids));
                if (isnumber.isNumber(ids)) {
                    int id = Integer.parseInt(ids);
                    if (id < min || id > max) {
                        label_1.setText("请输入有效id!");
                    } else {
                        label_1.setText("");
                        try {

                            List list2 = zhangwu.selectAll();
                            for(int i = 0;i < list2.size();i++){
                                model.removeRow(0);
                                System.out.println("yes");
                            }
                            zhangwu.delById(id);

                            list1 = zhangwu.selectAll();

                            data = query(list1);
                            System.out.println(list1);
                            for(int j = 0;j < list1.size();j++){
                                model.addRow(data[j]);
                            }
                        } catch (SQLException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                    }

                }
                else{
                    label_1.setText("请输入数字!");
                }
            }
        });
        button.setFont(new Font("宋体", Font.PLAIN, 23));
        button.setBounds(431, 51, 123, 31);
        frame.getContentPane().add(button);

        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(858, 113, 16, 431);
        frame.getContentPane().add(scrollPane);

        label_1 = new JLabel("");
        label_1.setForeground(Color.RED);
        label_1.setFont(new Font("宋体", Font.PLAIN, 24));
        label_1.setBounds(34, 73, 210, 27);
        frame.getContentPane().add(label_1);

        JLabel label = new JLabel("");
        label.setIcon(new ImageIcon("F:\\Eclipse_Java\\gjp.jpg"));
        label.setBounds(0, 0, 885, 553);
        frame.getContentPane().add(label);
    }

    public Object[][] query(List<Model> list) throws SQLException {
        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < Names.length; j++) {
                data[i][0] = list.get(i).getZwid();
                data[i][1] = list.get(i).getFlname();
                data[i][2] = list.get(i).getMoney();
                data[i][3] = list.get(i).getZhangHu();
                data[i][4] = list.get(i).getCreatetime();
                data[i][5] = list.get(i).getDescription();
            }
        }
        return data;
    }
}

4.修改 先实现查询功能,查询出来后直接在table中修改

package com.gjp.View;

import java.awt.EventQueue;
import java.awt.Font;
import java.sql.SQLException;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import com.gjp.Model.Model;
import com.gjp.Service.ZhangWuService;

import javax.swing.JButton;
import javax.swing.JScrollPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Edit {

    private String[] Names = { "id", "用途", "金额", "账户", "创建时间", "说明" };
    private JFrame frame;
    ZhangWuService zhangwu = new ZhangWuService();
    List<Model> list = zhangwu.selectAll();
    private Object[][] data = new Object[list.size()][Names.length];
    private JTable table;
    private Object[][] obj = new Object[list.size()][Names.length];

    public static void edit() {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Edit window = new Edit();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     * @throws SQLException 
     */
    public Edit() throws SQLException {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     * @throws SQLException 
     */
    private void initialize() throws SQLException {
        frame = new JFrame();
        frame.setResizable(false);
        frame.setBounds(550, 200, 892, 589);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        table = new JTable() {
            public boolean isCellEditable(int row, int col) {
                if(row >= 0 && row < table.getRowCount() && col == 0){
                    return false;
                }
                return true;
            }
        };
        table.setFont(new Font("宋体", Font.PLAIN, 22));
        table.setBounds(0, 0, 874, 481);
        frame.getContentPane().add(table);
        table.setRowHeight(30);
        DefaultTableModel model = new DefaultTableModel(query(), Names);
        table.setModel(model);

        JButton btnNewButton = new JButton("保存");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {    
                try {
                    zhangwu.delAll();
                } catch (SQLException e2) {
                    // TODO Auto-generated catch block
                    e2.printStackTrace();
                }
                for(int i = 0;i < list.size();i++){
                    for(int j = 0;j < Names.length;j++){
                        obj[i][j] = model.getValueAt(i, j);
                        System.out.println(obj[i][j]);
                    }
                    try {
                        zhangwu.edit(Integer.parseInt(obj[i][0].toString()), obj[i][1].toString(), Double.parseDouble(obj[i][2].toString()) , obj[i][3].toString() , obj[i][4].toString(), obj[i][5].toString());
                    } catch (NumberFormatException | SQLException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }   
            }
        });
        btnNewButton.setFont(new Font("宋体", Font.PLAIN, 25));
        btnNewButton.setBounds(332, 494, 129, 37);
        frame.getContentPane().add(btnNewButton);

        JLabel lblNewLabel = new JLabel("New label");
        lblNewLabel.setBounds(0, 0, 885, 553);
        lblNewLabel.setIcon(new ImageIcon("F:\\Eclipse_Java\\gjp.jpg"));
        frame.getContentPane().add(lblNewLabel);

        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(858, 0, 16, 481);
        frame.getContentPane().add(scrollPane);
    }
    public Object[][] query() throws SQLException {
        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < Names.length; j++) {
                data[i][0] = list.get(i).getZwid();
                data[i][1] = list.get(i).getFlname();
                data[i][2] = list.get(i).getMoney();
                data[i][3] = list.get(i).getZhangHu();
                data[i][4] = list.get(i).getCreatetime();
                data[i][5] = list.get(i).getDescription();
            }
        }
        return data;
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值