我使用Glazed列表,在jTable
里我有一个布尔列。 默认情况下,jTable
呈现一个复选框,其中列的类型为Boolean.Class
。 使用玻璃清单我不能得到需要的复选框。我提供了扩展DefaultTableCellRenderer
的复选框,但我不满意它,因为复选框不是“可点击的”。如何呈现复选框?
在GL FAQ http://www.glazedlists.com/documentation/faq我发现:
* Q:我如何指定我的布尔表格单元格有一个复选框来呈现? 出于某种原因,Glazed Lists没有getColumnClass()方法。
答:如果您需要指定列类,则需要实现AdvancedTableFormat接口而不是常规的TableFormat类。 如果您正在使用GlazedLists.tableFormat()工厂方法,则必须指定基本Object的类以正确实施AdvancedTableFormat.getColumnClass()方法。*
您是否有过这方面的经验?我没有用示例找到任何链接。常见问题解答中的重要环节已被打破。
我试着用这样的:
public class CheckBoxTableModel implements AdvancedTableFormat {
public Class getColumnClass(int column) {
if(column==4)
return Boolean.class;
else
return Object.class;
}
}
请帮帮忙!
编辑: 我这个尝试,与JTable的形式不显示
private class TicketTableFormat implements AdvancedTableFormat<Ticket> {
private final String[] cols = new String[]{"Id", "From", "Subject", "Date", "Incomplete"};
public int getColumnCount() {
return cols.length;
}
public String getColumnName(int colId) {
return cols[colId];
}
public Class getColumnClass(int col) {
if (col == 4) {
return Boolean.class;
} else {
return Object.class;
}
}
public Object getColumnValue(Ticket ticket, int colId) {
switch (colId) {
case 0:
return ticket.getId();
case 1:
return ticket.getFrom();
case 2:
return ticket.getSubject();
case 3:
return ticket.getDate();
case 4:
return ticket.getIncomplete();
}
return null;
}
public boolean isEditable(Ticket e, int col) {
if (col < 4) {
return false;
} else {
return true;
}
}
public Ticket setColumnValue(Ticket e, Object o, int i) {
e.setB((Boolean) editedValue);
return e;
}
public Comparator getColumnComparator(int i) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
我把它叫做本:
TicketTableFormat tbFormat = new TicketTableFormat();
TicketsModel = new EventTableModel(textFilteredTickets, tbFormat);
ticketTable.setModel(TicketsModel);
应该工作,你确定4是布尔列的索引(索引从零开始,这是第一次== 0)? – kleopatra 2011-04-20 10:20:48
是的,我知道。 :(只打印出值true/false没有复选框:/ – xplorer00 2011-04-20 11:38:32
不确定它有帮助,但死链接应指向[here](http://java.net/projects/glazedlists/lists/users/archive/2004-12/message/0) – trashgod 2011-04-20 12:28:52