大神们,小弟有个小问题,不知道怎么解决好

树欲静而风不止 2012-09-20 09:06:27
我碰到了一个问题,我用jtalbe来显示数据库一张表的数据,我又做了添加修改删除的 操作,当我插入数据成功的时候,我查看数据库里面的数据是插入进来了,可是jtable 没有更新,我也知道 也重新绑定jtable的数据
可是我不知道怎么绑定好
我jtable是作为一个类的属性的
private Jtable table;

我开始想的是把jtable重新 new一下,覆盖以前的那个 可是不行啊,不知道该怎么办了
...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inhibitory 2012-09-22
  • 打赏
  • 举报
回复
如果是我来实现这个功能,我使用自己定义TableModel,然后插入数据时
1. 插入到数据库
2. 第1步插入成功后,把这条数据也同时插入到TableModel:setValueAt(int row, int col),在这个函数里调用
fireTableCellUpdated(row, col); 提示JTable刷新界面

一个简单的TableModel例子,可以参考一下进行修改

protected class MyTableModel extends AbstractTableModel {
private String[] columnNames;
private Object[][] rowData;

public MyTableModel(Object[][] rowData, String[] columnNames) {
this.rowData = rowData;
this.columnNames = columnNames;
}

@Override
public int getColumnCount() {
return columnNames.length;
}

@Override
public int getRowCount() {
return rowData.length;
}

@Override
public String getColumnName(int col) {
return columnNames[col];
}

@Override
public Class getColumnClass(int col) {
// 如果是boolean,则显示为JCheckBox
// 如果是Integer,则只能输入整数
return getValueAt(0, col).getClass();
}

@Override
public boolean isCellEditable(int row, int col) {
// 第一列不能编辑
return col == 0 ? false : true;
}

@Override
public Object getValueAt(int row, int col) {
return rowData[row][col];
}

@Override
public void setValueAt(Object value, int row, int col) {
// 双击时cell editor显示,然后输入值
// 当cell失去焦点或者按下回车键后,setValueAt方法被调用,更新cell renderer
System.out.println("setValuAt: Value: " + value + ", [" + row + ", " + col + "]");
rowData[row][col] = value;
fireTableCellUpdated(row, col);
}
}
iGoodLoser 2012-09-20
  • 打赏
  • 举报
回复

setModel(new AbstractTableModel(){
public int getRowCount(){}
public int getColumnCount(){}
public Object getValueAt(int row, int column){}

});

这样调用setModel的话,jtable会自动监听数据库的改变来改变自身
  • 打赏
  • 举报
回复
真不知道怎么重新给这个jtable绑定值

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧