Удалить 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(),

Другие вопросы по тегам