因为在JTable中显示的内容是存储对象的toString
,是否有可能显示其他信息?
例如,如果我有一个像这样的简单用户对象:
class User {
private String firstname;
private String lastname;
...
}
我可以在JTable的专栏中显示first
和last
名称属性吗?
像这样:
目前,我将User
对象的字符串属性存储在JTable
而不是User
对象本身中。
// where first/lastname are the strings retrieved
// via getFirstname() and getLastname() on the User object.
model.addRow(new Object[] {first, last });
然而,这个问题是我需要检索和构建用户在JTable中单击的Object时所涉及的所有书籍。是否可以将User对象存储在JTable中,但是根据它所在的列显示不同的属性?
答案 0 :(得分:2)
是的。只需为每列定义不同的TableCellRenderer:
User user = new User("Zack", "Yoshyaro");
DefaultTableModel model = new DefaultTableModel(new Object[]{"First", "Last"}, 0);
model.addRow(new Object[]{user, user}); // note user must be added for each column, but it's the same object
JTable table = new JTable(model);
TableColumn firstName = table.getColumn("First");
firstName.setCellRenderer(...); // a cell renderer that shows user.getFirstName();
TableColumn lastName = table.getColumn("Last");
lastName.setCellRenderer(...); // a cell renderer that shows user.getLastName();
请参阅Using custom Renderer教程中的How to Use Tables部分。