从JTable CellEditor中删除HTML

时间:2014-03-16 16:09:45

标签: java html swing jtable tablecelleditor

我有一个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 个答案:

答案 0 :(得分:1)

我不确定事情在哪里出错; complete example可能会有所启发。正常的编辑序列概述为here,表明您应该创建自己的renderer and editor

class MyRenderer extends DefaultTableCellRenderer {…}
class MyEditor extends DefaultCellEditor {…}

并按如下方式应用它们:

table.setDefaultRenderer(String.class, new MyRenderer());
table.setDefaultEditor(String.class, new MyEditor());

确保您的TableModelgetColumnClass()返回正确的类型标记。