为jTable的每一行分配一个隐藏值

时间:2011-03-17 21:44:13

标签: java jtable hidden

如何为jTable的每一行分配一个id?
我不希望用户能够看到它。

3 个答案:

答案 0 :(得分:2)

快速破解就是use a hidden column。一个更好的方法可能是编写一个甚至不会将所述数据暴露给JTable的自定义表模型,但这更复杂: - )

快乐的编码。

答案 1 :(得分:2)

您应该通过创建一个实现TableModel的类来实现自己的表模型,或者更容易创建一个扩展AbstractTableModel的类。

如果你这样做,你只需要实现

class MyModel extends AbstractTableModel {

    public Object getValueAt(int rowIndex, int columnIndex) {
        // return what value is appropriate  
        return null;  
    }

    public int getColumnCount() {
    // return however many columns you want
        return 1;
}

    public int getRowCount() {
    // return however many rows you want
    return 1;
}
}

通常你会在你选择的对象类中创建一个List,而getRowCount就是这个列表的大小。

getValueAt将返回列表中Object的值。

例如,如果我想要一个具有隐藏ID的用户表,那么它将是

class UserModel extends AbstractTableModel {

    private List<User> users = new ArrayList<User>();

    public Object getValueAt(int rowIndex, int columnIndex) {
        User user = users.get(rowIndex);
        if (columnIndex == 0)
            return user.getName();
        else
            return user.getAge(); //whatever 
    }

    public int getColumnCount() {
        return 2;
    }

    public int getRowCount() {
        return users.size();
    }
}

class User {
    private int userId; // hidden from the table
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

答案 2 :(得分:1)

rowData只是一个Object数组,因此在您的类中,表示行模型的id的成员变量不会包含在toString()中。