编程语言
首页 > 编程语言> > java – 如何将数据添加到在设计模式下创建的JTable?

java – 如何将数据添加到在设计模式下创建的JTable?

作者:互联网

我创建了一个包含三列表的初始JFrame,如下所示:

 

这个JFrame是在设计模式下创建的,所以现在在面板的构造函数中,我想加载一些数据,所以当用户选择打开这个JFrame时,数据就被加载了.

我的列数据类型是Object(通常“Status”用于表示共享状态的图像 – 活动或非活动),共享名称的字符串和连接到该共享的活动客户端数量的整数.

我的问题是,如何通过代码向JTable添加行?

解决方法:

以简化的方式(可以改进):

class MyModel extends AbstractTableModel{

    private ArrayList<Register> list = new ArrayList<Register>();

    @Override
    public int getColumnCount() {
        return 3;
    }

    @Override
    public int getRowCount() {
        return list.size();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        Register r = list.get(rowIndex);
        switch (columnIndex) {
        case 0: return r.status; 
        case 1: return r.name;
        case 2: return r.clients; 
        }
            return null;
    }

    public void addRegister(String status, String name, String clients){
        list.add(new Register(status, name, clients));
        this.fireTableDataChanged();
    }

    class Register{
        String status;
        String name;
        String clients;

        public Register(String status, String name, String clients) {
            this.status = status;
            this.name = name;
            this.clients = clients;
        }
    }

}

然后,在面板的构造函数中:

MyTableModel mtm = new MyTableModel();
yourtable.setModel(mtm);

并添加一行:

mtm.addRegister("the status","the name","the client(s)");

编辑:

要更改列的标题名称:

TableColumn statusColumn = yourtable.getColumnModel().getColumn(0); 
statusColumn.setHeaderValue("Status");

标签:tablemodel,java,swing,jtable,jframe
来源: https://codeday.me/bug/20191003/1847107.html