zoukankan      html  css  js  c++  java
  • Java 动态向 JTable 中添加数据

      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 }
  • 相关阅读:
    Source not found for GeneratedMethodAccessor127.invoke(Object, Object[]) line: not available
    Common Lisp学习资源整理
    安装lispbox出现:error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory
    《完全用Linux工作》作者:王垠
    记一次奇怪的电脑故障
    Linux下修改键盘映射
    百度与谷歌的差别,英文检索的重要性
    你今天的习惯决定了你将来的位置
    Coursera上一个不错的Java课
    无限制使用ppt转pdf功能
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/6008591.html
Copyright © 2011-2022 走看看