我有一个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();
}
});
}
}
答案 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());
确保您的TableModel
从getColumnClass()
返回正确的类型标记。