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实现什么,但这不是必需的


如果这个答案不充分,那么您需要创建并发布您的,以便我们更好地了解您的问题。

您想如何重置当前数据我面临着一个噩梦,因为创建表模型的类是嵌套的,而表不是嵌套的,我无法轻松引用其中的表对象。这就是为什么我试图使用一个实现事件的接口