如何更新表格?

时间:2016-03-09 16:08:45

标签: java swing sqlite methods

我使用SQLite。我有2个JFrame。 1st由表格和"加载数据","编辑数据"组成。单击编辑以显示新的第二个JFrame。我希望在使用Edit类进行一些更改后更新我的表。我怎么做到的?一个想法是使用ActionListener,以便在我单击保存,删除或更新Jframe 1的JFrame2方法中的按钮后,它将保留用于更新表(使用查询)。我试过了,但它不起作用。我不希望在第二个Jframe中调用1 Jframe的方法,我希望在第一个Jframe中调用此方法。有哪些可能的解决方案

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import net.proteanit.sql.DbUtils;

import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.*;
import javax.swing.*;
public class Diary extends JFrame {

    private JPanel contentPane;
    JTable table;
    private JButton btnLoadData;



    public void refreshTabel(){
        try {
            String query = "select * from Diary";
            PreparedStatement pst = connection.prepareStatement(query);
            ResultSet rs = pst.executeQuery();
            table.setModel(DbUtils.resultSetToTableModel(rs));
            pst.close();
            rs.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }



    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Diary frame = new Diary();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
Connection connection = null;
    /**
     * Create the frame.
     */
    public Diary() {
        setResizable(false);
        connection = Main.dbConnector();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 1250, 650);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(34, 58, 1182, 530);
        contentPane.add(scrollPane);

        table = new JTable();
        scrollPane.setViewportView(table);

        btnLoadData = new JButton("Load data");
        btnLoadData.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                try {
                    String query = "select * from Diary";
                    PreparedStatement pst = connection.prepareStatement(query);
                    ResultSet rs = pst.executeQuery();
                    table.setModel(DbUtils.resultSetToTableModel(rs));
                    pst.close();
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        btnLoadData.setBounds(33, 17, 117, 29);
        contentPane.add(btnLoadData);

        JButton btnAddData = new JButton("Edit");
        btnAddData.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                AddData nw = new AddData();
                nw.addData();
                refreshTabel();
            }
        });
        btnAddData.setBounds(153, 17, 117, 29);
        contentPane.add(btnAddData);

    }
}

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import com.sun.glass.events.WindowEvent;

import net.proteanit.sql.DbUtils;

import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.awt.event.ActionEvent;

public class AddData extends JFrame {

    private JPanel contentPane;
    private JTextField Date;
    private JTextField ExerciseName;
    private JTextField Weight;
    private JTextField Sets;
    private JTextField Reps;
    /**
     * Launch the application.
     * @return 
     */


    public static void addData() {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    AddData frame = new AddData();
                    frame.setVisible(true);
                    frame.setAlwaysOnTop(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    Connection connection = null;
    private JTextField Exercise;
    private JTextField N;
    /**
     * Create the frame.
     */
    public AddData() {
        setTitle("Edit");
        setResizable(false);
        connection = Main.dbConnector();
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setBounds(100, 100, 465, 368);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel lblDate = new JLabel("Date");
        lblDate.setBounds(29, 49, 61, 16);
        contentPane.add(lblDate);

        JLabel ExerciseLabel = new JLabel("Exercise");
        ExerciseLabel.setBounds(29, 88, 90, 16);
        contentPane.add(ExerciseLabel);

        JLabel lblNewLabel_1 = new JLabel("Sets");
        lblNewLabel_1.setBounds(29, 169, 61, 16);
        contentPane.add(lblNewLabel_1);

        JLabel lblReps = new JLabel("Reps");
        lblReps.setBounds(29, 213, 61, 16);
        contentPane.add(lblReps);

        JLabel lblWeight = new JLabel("Weight");
        lblWeight.setBounds(29, 126, 61, 16);
        contentPane.add(lblWeight);

        Date = new JTextField();
        Date.setBounds(169, 56, 150, 26);
        contentPane.add(Date);
        Date.setColumns(10);

        ExerciseName = new JTextField();
        ExerciseName.setBounds(169, 60, 150, 26);
        contentPane.add(ExerciseLabel);
        ExerciseName.setColumns(10);

        Weight = new JTextField();
        Weight.setBounds(169, 132, 150, 26);
        contentPane.add(Weight);
        Weight.setColumns(10);

        Sets = new JTextField();
        Sets.setBounds(169, 170, 150, 26);
        contentPane.add(Sets);
        Sets.setColumns(10);

        Reps = new JTextField();
        Reps.setBounds(169, 208, 150, 26);
        contentPane.add(Reps);
        Reps.setColumns(10);

        JButton btnSave = new JButton("Save");
        btnSave.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                try {
                    String query = "insert into Diary (Date, Exercise, Weight, Sets, Reps) values (?,?,?,?,?)";
                    PreparedStatement pst = connection.prepareStatement(query);

                    pst.setString(1, Date.getText());
                    pst.setString(2, Exercise.getText());
                    pst.setString(3, Weight.getText());
                    pst.setString(4, Sets.getText());
                    pst.setString(5, Reps.getText());


                    pst.execute();
                    JOptionPane.showMessageDialog(null, "Saved");
                    pst.close();

                } catch (Exception ea) {
                    ea.printStackTrace();
                }

            }
        });
        btnSave.setBounds(29, 261, 117, 29);
        contentPane.add(btnSave);

        JButton btnUpdate = new JButton("Update");
        btnUpdate.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                try {
                    String query = "update Diary set N ='"+N.getText()+"', Exercise ='"+Exercise.getText()+"', Weight ='"+Weight.getText()+"', Sets ='"+Sets.getText()+"', Reps ='"+Reps.getText()+"'  where N ='"+N.getText()+"' ";
                    PreparedStatement pst = connection.prepareStatement(query);

                    pst.execute();
                    JOptionPane.showMessageDialog(null, "Updated");
                    pst.close();

                } catch (Exception ea) {
                    ea.printStackTrace();
                }

            }
        });
        btnUpdate.setBounds(176, 261, 117, 29);
        contentPane.add(btnUpdate);

        Exercise = new JTextField();
        Exercise.setBounds(169, 94, 150, 26);
        contentPane.add(Exercise);
        Exercise.setColumns(10);

        N = new JTextField();
        N.setBounds(169, 18, 150, 26);
        contentPane.add(N);
        N.setColumns(10);

        JLabel lblN = new JLabel("N");
        lblN.setBounds(29, 23, 61, 16);
        contentPane.add(lblN);

        JButton Delete = new JButton("Delete");
        Delete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    String query = "delete from Diary where N = '"+N.getText()+"'";
                    PreparedStatement pst = connection.prepareStatement(query);

                    pst.execute();
                    JOptionPane.showMessageDialog(null, "Deleted");
                    pst.close();

                } catch (Exception ea) {
                    ea.printStackTrace();
                }
            }
        });
        Delete.setBounds(305, 261, 117, 29);
        contentPane.add(Delete);


    }
}

0 个答案:

没有答案