JTable数据刷新

JTable数据刷新

网上找了很多资料,很多都是以讹传讹,不能实现JTable的刷新。摸索了很久才找到了这种可行的办法。感觉自己还是弱爆了啊,囧囧囧o(╯□╰)o


JTable结构

JTable采用了MVC的设计模式,见下图。JTable对象作为界面,TableModel对象设置JTable的属性如单元格是否可编辑等,并保存具体的表格数据。

JTable数据刷新_第1张图片
图片来源 http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data

一种更新方式

【例子】


    ……

    public JTable table = null;

    //MyTableModel继承自DefaultTableModel
    private MyTableModel tmModel = null;


    ……

    tmModel = new MyTableModel();
    //数据源,列名
    tmModel.setDataVector(data, colname);
    table = new JTable(tmModel);

    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setBounds(0, 0, FRAME_WIDTH, FRAME_HEIGHT);

    ……


    //通过下面这句重新设置数据源,实现Jtable的更新
    tmModel.setDataVector(dataNew, colNameNew);

MyTableModel.java


public class MyTableModel extends DefaultTableModel
{
    // 禁止编辑表格
    @Override
    public boolean isCellEditable(int row, int column)
    {
        return false;
    }
}

通过继承DefaultTableModel来自定义JTable的属性,如这里通过覆盖isCellEditable(int row, int column) 方法设置单元格不可编辑。

总结

如果按照JTable MVC的模式使用JTable,则刷新的一种方式是:

获取DefaultTableModel对象或子类对象,调用此对象的方法更新数据。

你可能感兴趣的:(学习笔记,mvc,JTable刷新,JavaSwing)