Java 每次执行功能时,完全更新JTable数据
你能帮我使这段代码可行吗?我创建了一个表,每次触发函数时都会更改其数据。代码由三个类组成 表格模型Java 每次执行功能时,完全更新JTable数据,java,swing,events,jtable,tablemodel,Java,Swing,Events,Jtable,Tablemodel,你能帮我使这段代码可行吗?我创建了一个表,每次触发函数时都会更改其数据。代码由三个类组成 表格模型 public class MyTableModel extends AbstractTableModel { private static final long serialVersionUID = 1L; private static String[] header = {"A", "B","C", "so on"}; public MyTableModel(){ } Record
public class MyTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private static String[] header = {"A", "B","C", "so on"};
public MyTableModel(){
}
RecordingList data = new RecordingList();
public void addData(RecordingList dataIn) {
data=dataIn;
this.fireTableDataChanged();
}
@Override
public int getColumnCount() {
return header.length; //length;
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public String getColumnName(int col) {
return header[col];
}
@Override
public String getValueAt(int row, int col)
{
Object[] rowSelected = data.getRecordingRow(row);
return rowSelected[col].toString();
}
}
JTable
public class DynamicTable extends JTable implements TableModelListener{
/**
*
*/
MyTableModel model;
private static final long serialVersionUID = 1L;
public DynamicTable() {
model = new MyTableModel();
initialize();
}
void initialize(){
setFillsViewportHeight(true);
setModel(model);
getModel().addTableModelListener(this);
setForeground(Color.BLACK);
setShowGrid(true);
setShowVerticalLines(true);
setBackground(Color.WHITE);
try {
// 1.6+
setAutoCreateRowSorter(true);
} catch(Exception continuewithNoSort) {
}
}
public void tableChanged(TableModelEvent e) {
TableModel newModel = (TableModel)e.getSource();
model=(MyTableModel)newModel;
setModel(model);
// Do something with the data...
}
}
最后,我实现了第三个类,它需要更新表和模型
这显然是一个非常错误的方法,我把它放在这里是为了让大家了解我正在努力实现的目标:
RecordingList recordingList = cr.getResultQuery();
MyTableModel newModel = new MyTableModel();
newModel.addData(recordingList);
TableModelEvent event= new TableModelEvent(newModel);
DynamicTable dt =new DynamicTable() ;
dt.tableChanged(event);
您可以创建新的MyTableModel对象,然后简单地使用它设置当前显示的JTable的模型。就这样。关键是获取对当前显示的JTable的引用,这一切都取决于您的代码结构和您在何处传递的引用 我不确定您试图通过TableModelEvent实现什么,但这不是必需的
如果这个答案不充分,那么您需要创建并发布您的,以便我们更好地了解您的问题。您想如何重置当前数据我面临着一个噩梦,因为创建表模型的类是嵌套的,而表不是嵌套的,我无法轻松引用其中的表对象。这就是为什么我试图使用一个实现事件的接口