用JTable执行编辑实现你说的那种功能(实际上这不单单是JTable的问题,所有的Swing界面都要考虑界面处理的设计方法),需要重新设计界面处理逻辑。我的做法是:所有需要保存的数据抽象成Persistable接口,里面有一些和存储相关的方法(类似于JDO的处理方式)。这些对象自己维护其属性的变化日志(界面对其执行的修改),在最后执行提交时用这些日志更新数据库。针对利用JTable进行编辑的界面,我继而抽象出TabularData接口。需要通过JTable进行编辑的对象可以实现此接口。从而可以放在JTable中进行编辑。下面是我的代码片断:public interface TabularData{
public Object getValueAt(int columnIndex); public void setValueAt(Object aValue, int columnIndex); public int getColumnCount(); public Class getColumnClass(int columnIndex); public String getColumnName(int columnIndex); public boolean isCellEditable(int col); public Object getData();
}public interface Persistable{
public int getDataState();//需要保存到数据库的对象根据该状态决定执行insert还是updata还是delete public boolean reconvert(); public RelationChange[] getRelationChangeLog(); public void setOriginalDataState(int theOriginalState); public Object getOriginalData();
}
public Object getValueAt(int columnIndex); public void setValueAt(Object aValue, int columnIndex); public int getColumnCount(); public Class getColumnClass(int columnIndex); public String getColumnName(int columnIndex); public boolean isCellEditable(int col); public Object getData();
}public interface Persistable{
public int getDataState();//需要保存到数据库的对象根据该状态决定执行insert还是updata还是delete public boolean reconvert(); public RelationChange[] getRelationChangeLog(); public void setOriginalDataState(int theOriginalState); public Object getOriginalData();
}
joy_wind(wind)
请问TabularData接口是不是作为jtable的一个构造函数的一个数据模型来使用
请问Persistable接口具体怎么用呀,以前我没接触过请大哥们给与指教
joy_wind(wind)
请问TabularData接口是不是作为jtable的一个构造函数的一个数据模型来使用
请问Persistable接口具体怎么用呀,以前我没接触过请大哥们给与指教
==============================
差不多吧,TabularData接口是作为JTable的数据用的。实际上你还要写自己的TableModel,比如我自己写了一个DataTableModel,它继承了AbstractTableModel,里面维护的数据就是一个TabularData的数组。Persistable是所有要持久化的对象都应该实现的一个接口。比如User,Company这样的对象,如果对它们的修改要更新到数据库中,就让他们实现Persistable接口。然后通过这个接口,在更新数据库时创建出不同的sql语句(update、delete或者insert)。这个接口还提供了重置的功能(reconvert方法),比如用户在界面上做了修改,最后又想恢复到修改前的状态,就可以调用这个reconvert方法。最后说一下,如果你的数据对象要放在JTable中编辑,可能两个接口就都要实现了。
我上面说的这种持久化设计方式,对简单的Swing应用(applet或者application)还可以,我在自己的一个简单的applet应用里就是这样做的。对于复杂的应用系统来说,这样的设计用起来就显得有点繁琐了,或者至少还要再精心考虑考虑;如果你的应用比较复杂,那就值得研究研究JDO或者其他一些OR映射的东西。
public Object getValueAt(int columnIndex); public void setValueAt(Object aValue, int columnIndex); public int getColumnCount(); public Class getColumnClass(int columnIndex); public String getColumnName(int columnIndex); public boolean isCellEditable(int col); public Object getData();
}
先谢谢上楼大哥
{for (j=0,table.table.getColumnCount(),j++)
victor dd[][].addElement(getValueAt(i,j))
}
for用逗号的吗?