Java 为jTable的每一行指定一个隐藏值

Java 为jTable的每一行指定一个隐藏值,java,jtable,hidden,Java,Jtable,Hidden,如何为jTable的每一行分配id? 我不希望用户能够看到它。一个快速的黑客程序就是要。更好的方法可能是编写一个自定义表模型,该模型甚至不向JTable公开所述数据,但更复杂的是:-) 快乐的编码。一个快速的破解方法就是。更好的方法可能是编写一个自定义表模型,该模型甚至不向JTable公开所述数据,但更复杂的是:-) 愉快的编码。rowData只是一个对象数组,因此在表示行模型的类中,有一个id的成员变量,它不会包含在toString()中。rowData只是一个对象数组,所以在表示行模型的类中

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

一个快速的黑客程序就是要。更好的方法可能是编写一个自定义表模型,该模型甚至不向JTable公开所述数据,但更复杂的是:-)

快乐的编码。

一个快速的破解方法就是。更好的方法可能是编写一个自定义表模型,该模型甚至不向JTable公开所述数据,但更复杂的是:-)


愉快的编码。

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

rowData只是一个对象数组,所以在表示行模型的类中,有一个id的成员变量,它不会包含在toString()中.

您应该通过创建一个实现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;
}
}
通常,您会在所选对象的类中创建一个列表,而getRowCount就是列表的大小

getValueAt将从列表中的对象返回值

例如,如果我想要一个具有隐藏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;
    }
}
class UserModel扩展了AbstractTableModel{
private List users=new ArrayList();
公共对象getValueAt(int行索引、int列索引){
User=users.get(rowIndex);
如果(columnIndex==0)
返回user.getName();
其他的
返回user.getAge();//随便什么
}
public int getColumnCount(){
返回2;
}
public int getRowCount(){
返回users.size();
}
}
类用户{
private int userId;//从表中隐藏
私有字符串名称;
私人互联网;
公共字符串getName(){
返回名称;
}
公共整数getAge(){
回归年龄;
}
}

您应该通过创建一个实现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;
}
}
通常,您会在所选对象的类中创建一个列表,而getRowCount就是列表的大小

getValueAt将从列表中的对象返回值

例如,如果我想要一个具有隐藏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;
    }
}
class UserModel扩展了AbstractTableModel{
private List users=new ArrayList();
公共对象getValueAt(int行索引、int列索引){
User=users.get(rowIndex);
如果(columnIndex==0)
返回user.getName();
其他的
返回user.getAge();//随便什么
}
public int getColumnCount(){
返回2;
}
public int getRowCount(){
返回users.size();
}
}
类用户{
private int userId;//从表中隐藏
私有字符串名称;
私人互联网;
公共字符串getName(){
返回名称;
}
公共整数getAge(){
回归年龄;
}
}