如何为jTable的每一行分配一个id?
我不希望用户能够看到它。
答案 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()中。