Удалить HTML из JTable CellEditor
У меня есть JTable и несколько редактируемых ячеек, которые динамически форматируются с очень специфическим HTML на основе некоторых бизнес-правил.
Однако при редактировании этих ячеек весь HTML-код находится в CellEditor. Я просто хочу простой текст в CellEditor.
Я пытаюсь сделать это для всей таблицы. Вот код, который я использовал. Я собрал расширенный DefaultCellEditor, но он все еще показывает HTML. Я даже не вижу отладчика, входящего в метод getCellEditorValue(). Что я делаю?
public class MyTable extends JTable
{
public MyTable()
{
MyTable.setCellEditor(new DefaultCellEditor(new JTextField())
{
@Override
public Object getCellEditorValue() {
// get content of textField
String str = (String) super.getCellEditorValue();
if (str == null) {
return null;
}
if (str.length() == 0) {
return null;
}
//remove HTML and return plain text
return Jsoup.parse(str).text();
}
});
}
}
1 ответ
Я не уверен, где дела идут плохо; полный пример может пролить свет. Здесь описана обычная последовательность редактирования, предполагающая, что вы, вероятно, должны создать свой собственный рендер и редактор:
class MyRenderer extends DefaultTableCellRenderer {…}
class MyEditor extends DefaultCellEditor {…}
и применять их следующим образом:
table.setDefaultRenderer(String.class, new MyRenderer());
table.setDefaultEditor(String.class, new MyEditor());
Будьте уверены, что ваш TableModel
возвращает токен правильного типа из getColumnClass()
,