Как сделать редактируемый столбец, строку или ячейку в GlazedLists/JTable в Java?
Может ли кто-нибудь добавить строку кода, чтобы показать, как сделать ячейку GlazdJTable редактируемой?
JTable table = new Jtable();
TableFormat tableFormat = GlazedLists.tableFormat(properties, headers);
model = new EventTableModel<Artikel>(filterList, tableFormat);
selectionModel = new EventSelectionModel<Artikel>(filterList);
table.setSelectionModel(selectionModel);
table.setModel(model);
// как настроить редактирование ячейки таблицы?
Примечание: я знаю, что TableFormat должен реализовывать интерфейс WritableTableFormat. но я не знаю, должен ли я создать собственный формат таблицы или возможно установить ячейку Jtable редактируемой точно так же, как JTable.
2 ответа
Рекомендуемый способ - использовать WritableTableFormat. EventTableModel проверяет, является ли формат таблицы WritableTableFormat, и если это так, делегирует вопрос isEditable() этому (как описано в документации EventTableModel). В противном случае EventTableModel предполагает, что таблица не редактируется.
В данный момент вы используете вспомогательный метод GlazedLists.tableFormat(), а не создаете экземпляр своего собственного TableFormat. Это нормально, есть метод именно для этого случая, где вы указываете, можно ли редактировать каждый столбец, передавая массив логических значений. См. Документацию GlazedLists.tableFormat(String[] propertyNames, String[] columnLabels, логическое [] редактируемое)).
Override TableModel's
методpublic boolean isCellEditable(int rowIndex, int columnIndex)
вернуть true для редактируемых и false для остальных ячеек.