最近不太忙,写了个j2se的应用程序,边写边解决,发现很多有意思的问题。把问题和解决方法整理下,方便后来人吧。
废话不多说,上图
需求是,点击用户管理这个JFrame上的新增,会弹出一个JDialog。新增完了,JDialog关闭,用户管理的jtabl会刷新
思路是,insert数据完了之后,重新select数据,把数据重新传给Jtable。下面是代码:
1、触发新增按钮
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// 新增
if(userSession!=null) {
new AddUserFrame(this,true,userSession,jTable1).setVisible(true);这里把Jtable传给了新增的页面
}else {
JOptionPane.showMessageDialog(this, "无权限,请退出软件重新登录", "提示", JOptionPane.ERROR_MESSAGE);
}
}
2、插入后的数据回传
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(date);
int uid = dbCon.getUserID(userSession);
String newPwd = MD5.MD5(password);
String sql = "insert into user (uname,pwd,adduser,addtime,status,realname) values ('"+uname+"','"+newPwd+"','"+uid+"','"+time+"','"+status+"','"+realname+"')";
dbCon.insert(sql);
JOptionPane.showMessageDialog(this, "添加成功", "提示", JOptionPane.INFORMATION_MESSAGE);
dispose();蓝得可以不看
//刷新Jtable数据
Object[][] data = null;
data = dbCon.getAllUserInfo();获得新数据,根据自己情况去获得数据
String[] names = {"序号","用户名","真实姓名","状态"};
MyTableModel tableModel = new MyTableModel(data, names);重新创建一个TableModel
jTable.setModel(tableModel);
jTable.setEnabled(true);
DefaultTableCellRenderer r = new DefaultTableCellRenderer(); //cell居中
r.setHorizontalAlignment(JLabel.CENTER);
jTable.setDefaultRenderer(Object.class, r); 观,让数据居中的黄色的是为了美观,让数据居中的代码中的
这里我自己重写了JtableModel,自己定义了个MyTableModel,大家一般用DefaultTableModel就可以