簡體   English   中英

JTable使用TableModel刷新

[英]JTable Refresh using TableModel

我一直在嘗試刷新我的Jtable,但我認為我在某種程度上與tableModel和Table Model偵聽器概念混淆了。

所以我通過在TableModel類中傳遞數據結構來構造表

public class TasksTableModel extends AbstractTableModel  {
    int[] collect;    
    String[]   columnNames;    
    Object[][] data;    

    public TasksTableModel(int[] collect) {
        this.collect=collect;
        columnNames=new String[]{"Job","Task"}; 
        for(int i=0;i<10;i++) {
           data[i][0]=collect[0];
           data[i][1]=collect[1];
        }
    }
 }    

    public int getRowCount() {
        return data.length;
    }

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

    public Object getValueAt(int rowIndex, int columnIndex) {
        return data[rowIndex][columnIndex];
    }

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

我的表是在另一個類(如TasksTableModel model = new TasksTableModel(tc); tcTable = new JTable(model); TasksTableModel model = new TasksTableModel(tc); tcTable = new JTable(model);

因此,對我的collect []對象進行了更新,之后我需要刷新表。到目前為止,我一直在將表設置為新的TaskTableModel,以刷新在現有表上失去任何排序的位置。我該怎么做所以。 請提供示例代碼,以使我更好地理解。

重構TasksTableModel以將設置模型與構造函數分開,例如:

public TasksTableModel(int[] collect) {
    columnNames=new String[]{"Job","Task"};
    setModel(collect);
}

public void setModel(int[] collect) {
    this.collect=collect;
    for(int i=0;i<10;i++) {
        data[i][0]=collect[0];
        data[i][1]=collect[1];
    }
}

然后,當您要更新collect[]對象時,請執行以下操作:

model.setModel(collect);
model.fireTableDataChanged();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM