您的位置:首页 > 编程语言 > Java开发

Java 动态向 JTable 中添加数据

2016-10-28 17:05 309 查看
1 import java.awt.Toolkit;
2 import javax.swing.SwingUtilities;
3 import javax.swing.UIManager;
4 import java.awt.Dimension;
5 public class JTableAppClass {
6     boolean packFrame = false;
7
8     public JTableAppClass() {
9         JTableAppFrame frame = new JTableAppFrame();
10         // Validate frames that have preset sizes
11         // Pack frames that have useful preferred size info, e.g. from their layout
12         if (packFrame) {
13             frame.pack();
14         } else {
15             frame.validate();
16         }
17         // Center the window
18         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
19         Dimension frameSize = frame.getSize();
20         if (frameSize.height > screenSize.height) {
21             frameSize.height = screenSize.height;
22         }
23         if (frameSize.width > screenSize.width) {
24             frameSize.width = screenSize.width;
25         }
26         frame.setLocation((screenSize.width - frameSize.width) / 2,
27                           (screenSize.height - frameSize.height) / 2);
28         frame.setVisible(true);
29     }
30
31     public static void main(String[] args) {
32         SwingUtilities.invokeLater(new Runnable() {
33             public void run() {
34                 try {
35                     UIManager.setLookAndFeel(UIManager.
36                                              getSystemLookAndFeelClassName());
37                 } catch (Exception exception) {
38                     exception.printStackTrace();
39                 }
40                 new JTableAppClass();
41             }
42         });
43     }
44 }
45 操作类:JTableAppFrame.java
46 package jtabletest;
47 import java.awt.Dimension;
48 import javax.swing.JFrame;
49 import javax.swing.JPanel;
50 import javax.swing.JTable;
51 import java.awt.Rectangle;
52 import javax.swing.JScrollPane;
53 import java.util.Vector;
54 import java.sql.*;
55 import java.util.ArrayList;
56 import javax.swing.JLabel;
57 import javax.swing.JTextField;
58 import java.awt.Font;
59 import javax.swing.JButton;
60 import java.awt.event.ActionEvent;
61 import java.awt.event.ActionListener;
62 import javax.swing.JOptionPane;
63 public class JTableAppFrame extends JFrame {
64     JPanel contentPane;
65     Vector CellsVector = new Vector();
66     Vector TitleVector = new Vector();
67     JScrollPane scp = new JScrollPane();
68     JTable tab = null;
69     DBCon dbcon = new DBCon();
70     JLabel lbl_name = new JLabel();
71     JLabel lbl_age = new JLabel();
72     JLabel lbl_address = new JLabel();
73     JTextField txt_name = new JTextField();
74     JTextField txt_age = new JTextField();
75     JTextField txt_address = new JTextField();
76     JButton btn_add = new JButton();
77     JButton btn_del = new JButton();
78     JButton btn_update = new JButton();
79     JButton btn_reset = new JButton();
80     public JTableAppFrame() {
81         try {
82             setDefaultCloseOperation(EXIT_ON_CLOSE);
83             jbInit();
84         } catch (Exception exception) {
85             exception.printStackTrace();
86         }
87     }
88
89     private void jbInit() throws Exception {
90         contentPane = (JPanel) getContentPane();
91         contentPane.setLayout(null);
92         this.setResizable(false);
93         setSize(new Dimension(400, 340));
94         setTitle("JTable");
95         scp.setBounds(new Rectangle(46, 32, 297, 157));
96         lbl_name.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
97         lbl_name.setText("姓名:");
98         lbl_name.setBounds(new Rectangle(46, 205, 42, 15));
99         lbl_age.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
100         lbl_age.setText("年龄:");
101         lbl_age.setBounds(new Rectangle(200, 205, 42, 15));
102         lbl_address.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
103         lbl_address.setText("地址:");
104         lbl_address.setBounds(new Rectangle(46, 232, 42, 15));
105         txt_name.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
106         txt_name.setBounds(new Rectangle(98, 205, 72, 21));
107         txt_age.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
108         txt_age.setBounds(new Rectangle(250, 205, 72, 21));
109         txt_address.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
110         txt_address.setBounds(new Rectangle(98, 232, 72, 21));
111         btn_add.setBounds(new Rectangle(46, 271, 83, 25));
112         btn_add.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
113         btn_add.setText("添 加");
114         btn_add.addActionListener(new JTableAppFrame_btn_add_actionAdapter(this));
115         btn_del.setBounds(new Rectangle(155, 271, 83, 25));
116         btn_del.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
117         btn_del.setText("删 除");
118         btn_del.addActionListener(new JTableAppFrame_btn_del_actionAdapter(this));
119         btn_update.setBounds(new Rectangle(260, 271, 83, 25));
120         btn_update.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
121         btn_update.setText("修 改");
122         btn_update.addActionListener(new
123                                      JTableAppFrame_btn_update_actionAdapter(this));
124         btn_reset.setBounds(new Rectangle(258, 232, 83, 25));
125         btn_reset.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
126         btn_reset.setText("重 置");
127         btn_reset.addActionListener(new JTableAppFrame_btn_reset_actionAdapter(this));
128         contentPane.add(scp);
129         contentPane.add(lbl_name);
130         contentPane.add(lbl_age);
131         contentPane.add(lbl_address);
132         contentPane.add(txt_name);
133         contentPane.add(txt_age);
134         contentPane.add(txt_address);
135         contentPane.add(btn_del);
136         contentPane.add(btn_update);
137         contentPane.add(btn_add);
138         contentPane.add(btn_reset);
139         dbcon.connectDB();
140         this.showTable();
141         tab = new JTable(CellsVector, TitleVector);
142         scp.getViewport().add(tab);
143     }
144
145     public void showTable() {
146         this.TitleVector.add("姓名");
147         this.TitleVector.add("年龄");
148         this.TitleVector.add("地址");
149         dbcon.select();
150         ArrayList list = dbcon.select();
151         for (int i = 0; i < list.size(); i++) {
152             Student stu = (Student) list.get(i);
153             Vector v = new Vector();
154             v.add(stu.getName());
155             v.add(stu.getAge());
156             v.add(stu.getAddress());
157             CellsVector.add(v);
158         }
159     }
160
161
162     String name;
163     String age;
164     String address;
165     public int checkInformation() {
166         name = this.txt_name.getText();
167         age = this.txt_age.getText();
168         address = this.txt_address.getText();
169         if (name.equals("")) {
170             JOptionPane.showMessageDialog(this, "您好!请输入姓名!", "提示", 1);
171             this.txt_name.grabFocus();
172             return 0;
173         }
174         if (age.equals("")) {
175             JOptionPane.showMessageDialog(this, "您好!请输入年龄!", "提示", 1);
176             this.txt_age.grabFocus();
177             return 0;
178         }
179         char[] ans = age.toCharArray();
180         for (int i = 0; i < ans.length; i++) {
181             if (!Character.isDigit(ans[i])) {
182                 JOptionPane.showMessageDialog(this, "您好!年龄输入错误!", "提示", 1);
183                 this.txt_age.setText("");
184                 this.txt_age.grabFocus();
185                 return 0;
186             }
187         }
188         if (age.length() > 3) {
189             JOptionPane.showMessageDialog(this, "您好!年龄最高只能为 100 岁!", "提示", 1);
190             this.txt_age.setText("");
191             this.txt_age.grabFocus();
192             return 0;
193         }
194         if (address.equals("")) {
195             JOptionPane.showMessageDialog(this, "您好!请输入地址!", "提示", 1);
196             this.txt_address.grabFocus();
197             return 0;
198         }
199         ages = Integer.valueOf(age);
200         return 1;
201     }
202
203     int ages;
204     public void btn_add_actionPerformed(ActionEvent e) {
205         if (this.checkInformation() == 0) {
206             return;
207         }
208         dbcon.insert(name, ages, address);
209         this.CellsVector.clear();
210         this.showTable();
211         this.tab.updateUI();
212         this.btn_reset_actionPerformed(e);
213     }
214
215     ResultSet rs;
216     public void btn_del_actionPerformed(ActionEvent e) {
217         String name = this.txt_name.getText();
218         this.txt_age.setEditable(false);
219         this.txt_address.setEditable(false);
220         if (name.equals("")) {
221             JOptionPane.showMessageDialog(this, "您好!请输入姓名!", "提示", 1);
222             this.txt_name.grabFocus();
223             return;
224         }
225         try {
226             String sql = "select * from Student where name=?";
227             PreparedStatement ps = DBCon.con.prepareStatement(sql);
228             ps.setString(1, name);
229             rs = ps.executeQuery();
230             if (rs.next()) {
231                 ps.close();
232                 dbcon.delete(name);
233                 this.CellsVector.clear();
234                 this.showTable();
235                 this.tab.updateUI();
236                 this.btn_reset_actionPerformed(e);
237             } else {
238                 JOptionPane.showMessageDialog(this, "您好!该学员不存在!", "提示", 1);
239                 this.btn_reset_actionPerformed(e);
240                 return;
241             }
242         } catch (SQLException ex) {
243             System.out.println("核对学员信息发生异常" + ex.getMessage());
244         }
245     }
246
247     public void btn_update_actionPerformed(ActionEvent e) {
248         if (this.checkInformation() == 0) {
249             return;
250         }
251         try {
252             String sql = "select * from Student where name=?";
253             PreparedStatement ps = DBCon.con.prepareStatement(sql);
254             ps.setString(1, name);
255             rs = ps.executeQuery();
256             if (rs.next()) {
257                 ps.close();
258                 dbcon.update(name, ages, address);
259                 this.CellsVector.clear();
260                 this.showTable();
261                 this.tab.updateUI();
262                 this.btn_reset_actionPerformed(e);
263             } else {
264                 JOptionPane.showMessageDialog(this, "您好!该学员不存在!", "提示", 1);
265                 this.btn_reset_actionPerformed(e);
266                 return;
267             }
268         } catch (SQLException ex) {
269             System.out.println("核对学员信息发生异常" + ex.getMessage());
270         }
271     }
272
273     public void btn_reset_actionPerformed(ActionEvent e) {
274         this.txt_name.setText("");
275         this.txt_age.setText("");
276         this.txt_address.setText("");
277         this.txt_age.setEditable(true);
278         this.txt_address.setEditable(true);
279     }
280 }
281
282 class JTableAppFrame_btn_del_actionAdapter implements ActionListener {
283     private JTableAppFrame adaptee;
284     JTableAppFrame_btn_del_actionAdapter(JTableAppFrame adaptee) {
285         this.adaptee = adaptee;
286     }
287     public void actionPerformed(ActionEvent e) {
288         adaptee.btn_del_actionPerformed(e);
289     }
290 }
291
292 class JTableAppFrame_btn_update_actionAdapter implements ActionListener {
293     private JTableAppFrame adaptee;
294     JTableAppFrame_btn_update_actionAdapter(JTableAppFrame adaptee) {
295         this.adaptee = adaptee;
296     }
297     public void actionPerformed(ActionEvent e) {
298         adaptee.btn_update_actionPerformed(e);
299     }
300 }
301
302 class JTableAppFrame_btn_reset_actionAdapter implements ActionListener {
303     private JTableAppFrame adaptee;
304     JTableAppFrame_btn_reset_actionAdapter(JTableAppFrame adaptee) {
305         this.adaptee = adaptee;
306     }
307     public void actionPerformed(ActionEvent e) {
308         adaptee.btn_reset_actionPerformed(e);
309     }
310 }
311
312 class JTableAppFrame_btn_add_actionAdapter implements ActionListener {
313     private JTableAppFrame adaptee;
314     JTableAppFrame_btn_add_actionAdapter(JTableAppFrame adaptee) {
315         this.adaptee = adaptee;
316     }
317     public void actionPerformed(ActionEvent e) {
318         adaptee.btn_add_actionPerformed(e);
319     }
320 }
321 连接数据库类:DBCon.java
322 package jtabletest;
323 import java.sql.*;
324 import java.util.ArrayList;
325 import javax.swing.JOptionPane;
326 public class DBCon {
327     static Connection con;
328     private final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
329     private final String URL = "jdbc:odbc:test";
330     ResultSet rs = null;
331     Statement st = null;
332     public DBCon() {
333     }
334
335     public void connectDB() {
336         try {
337             Class.forName(DRIVER);
338         } catch (ClassNotFoundException ex) {
339             System.out.println(ex.getMessage());
340         }
341         if (con == null) {
342             try {
343                 con = DriverManager.getConnection(URL);
344             } catch (SQLException ex) {
345                 System.out.println("创建连接发生异常:" + ex.getMessage());
346                 System.exit(0);
347             }
348         }
349     }
350
351     public ArrayList select() {
352         ArrayList list = new ArrayList();
353         String sql = "select * from Student";
354         try {
355             st = con.createStatement();
356             rs = st.executeQuery(sql);
357             while (rs.next()) {
358                 Student stu = new Student();
359                 stu.setName(rs.getString(2));
360                 stu.setAge(rs.getInt(3));
361                 stu.setAddress(rs.getString(4));
362                 list.add(stu);
363             }
364         } catch (SQLException ex) {
365             System.out.println("查询数据发生异常:" + ex.getMessage());
366         } finally {
367             try {
368                 rs.close();
369             } catch (SQLException ex1) {
370                 System.out.println("查询数据关闭语句异常:" + ex1.getMessage());
371             }
372         }
373         return list;
374     }
375
376     public void insert(String name, int age, String address) {
377         String sql = "insert into Student values(?,?,?)";
378         PreparedStatement ps = null;
379         try {
380             ps = con.prepareStatement(sql);
381             ps.setString(1, name);
382             ps.setInt(2, age);
383             ps.setString(3, address);
384             if (ps.executeUpdate() != 0) {
385                 JOptionPane.showMessageDialog(null, "恭喜!插入数据成功!", "消息", 1);
386             }
387         } catch (SQLException ex) {
388             System.out.println("插入数据发生异常:" + ex.getMessage());
389         } finally {
390             try {
391                 ps.close();
392             } catch (SQLException ex1) {
393                 System.out.println("插入数据关闭语句异常:" + ex1.getMessage());
394             }
395         }
396     }
397
398     public void update(String name, int age, String address) {
399         String sql = "update Student set age = ?,address = ? where name =?";
400         PreparedStatement ps = null;
401         try {
402             ps = con.prepareStatement(sql);
403             ps.setInt(1, age);
404             ps.setString(2, address);
405             ps.setString(3, name);
406             if (ps.executeUpdate() != 0) {
407                 JOptionPane.showMessageDialog(null, "恭喜!更新数据成功!", "消息", 1);
408             }
409         } catch (SQLException ex) {
410             System.out.println("修改数据发生异常!");
411         } finally {
412             try {
413                 ps.close();
414             } catch (SQLException ex1) {
415                 System.out.println("修改数据关闭语句异常:" + ex1.getMessage());
416             }
417         }
418     }
419
420     public void delete(String name) {
421         String sql = "delete from Student where name =?";
422         PreparedStatement ps = null;
423         int delNumber;
424         try {
425             ps = con.prepareStatement(sql);
426             ps.setString(1, name);
427             delNumber = ps.executeUpdate();
428             if (delNumber != 0) {
429                 JOptionPane.showMessageDialog(null, "恭喜!删除数据成功!", "消息", 1);
430             }
431         } catch (SQLException ex) {
432             System.out.println("删除数据发生异常:" + ex.getMessage());
433         } finally {
434             try {
435                 ps.close();
436             } catch (SQLException ex1) {
437                 System.out.println("删除数据关闭语句异常:" + ex1.getMessage());
438             }
439         }
440     }
441
442     public void destoryConnection() {
443         if (con != null) {
444             try {
445                 con.close();
446             } catch (SQLException ex) {
447                 System.out.println("释放连接异常:" + ex.getMessage());
448             }
449         }
450     }
451 }
452 JavaBean 类:Student.java
453 package jtabletest;
454 public class Student {
455     private String name;
456     private int age;
457     private String address;
458     public Student() {
459     }
460     public void setName(String name) {
461         this.name = name;
462     }
463     public void setAge(int age) {
464         this.age = age;
465     }
466     public void setAddress(String address) {
467         this.address = address;
468     }
469     public String getName() {
470         return name;
471     }
472     public int getAge() {
473         return age;
474     }
475     public String getAddress() {
476         return address;
477     }
478 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: