首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TableModel刷新JTable

使用TableModel刷新JTable
EN

Stack Overflow用户
提问于 2011-08-08 22:23:55
回答 1查看 5.4K关注 0票数 1

我一直在尝试刷新我的Jtable,但我想我不知何故把tableModel和Table Model listener概念搞混了。

因此,我通过在TableModel类中传递数据结构来构造一个表

代码语言:javascript
复制
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);的另一个类中创建的

因此,我的collect[]对象发生了更新,在此之后我需要刷新table.So。我一直在将表设置为一个新的TaskTableModel,以刷新在现有table.How上丢失任何排序的位置。请提供一个示例代码,以便我更好地理解。

EN

回答 1

Stack Overflow用户

发布于 2011-08-10 11:43:50

重构TasksTableModel以将设置模型与构造函数分开,例如:

代码语言:javascript
复制
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[]对象时,请执行以下操作:

代码语言:javascript
复制
model.setModel(collect);
model.fireTableDataChanged();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6983597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档