2011-03-17 55 views

回答

2

一個快速入侵只是爲了use a hidden column。一種更好的方法可能是編寫一個甚至不向JTable公開所述數據的自定義表模型,但是涉及更多:-)

快樂編碼。

1

rowData只是一個Object數組,因此在表示行模型的類中有一個id成員變量,它不包含在toString()中。

1

您應該通過創建一個實現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將從列表中的對象返回值。

例如,如果我想用戶的表隱藏標識,這將是

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; 
    } 
}