Я использую Глазированные списки, в jTable
, где у меня есть столбец, который является логическим.По умолчанию jTable
отображает флажок, в котором столбец имеет тип Boolean.Class
.Используя Застекленные списки я не могу получить флажок, который необходим.Я рендерил чекбоксы, расширяющие DefaultTableCellRenderer
, но я не удовлетворен этим, потому что чекбоксы не «кликабельны».
В списке ошибок GL http://www.glazedlists.com/documentation/faq я нашел:
* В: Как мне указать, чтобы ячейки моей булевой таблицы отображались с флажком?По какой-то причине в Glazed Lists нет метода getColumnClass ().
A: Если вам нужно указать класс столбца, вам нужно реализовать интерфейс AdvancedTableFormat вместо обычного класса TableFormat.Если вы используете фабричный метод GlazedLists.tableFormat (), вы должны указать класс базового объекта для правильной реализации метода AdvancedTableFormat.getColumnClass (). *
Кто-нибудь из вас имел опыт работы с этим?не найти никаких ссылок с примером.Важная ссылка в faq не работает.
Я пытался с этим:
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);