DefaultTableModel addRow方法以格式添加行:column_name = column_value而不是column_value

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DefaultTableModel addRow方法以格式添加行:column_name = column_value而不是column_value相关的知识,希望对你有一定的参考价值。

我在尝试在JTable中添加新行时遇到问题。我的JTable正在使用DefaultTableModel,这是我用来添加新行的代码:

AddDialog diag = new AddDialog(MainWindow.getInstance(),"Add Entity",true,tab);
diag.setVisible(true);
if(diag.isSaved()) {
    entity = diag.getEntity();
    table = diag.getTableModel();
    table.getEntities().add(entity);
    if(tab instanceof TablePreview) {
        tablePreview = (TablePreview)tab;
        tableModel = (DefaultTableModel) (tablePreview.getTableView().getModel());
        Object[] newRow = new Object[entity.getAttributes().size()];
        int i=0;
        for (Entry<String, Object> entry : entity.getAttributes().entrySet()) { 
            newRow[i++]=entry;
        }
        tableModel.addRow(newRow);

    }else if(tab instanceof ChildTablePreview) {
        System.out.println("Tab is instanceof ChildTablePreview");
    }
}else {
    System.out.println("Entity not saved!");
}

diag是扩展AddDialogJDialog的实例,当我填写对话框的字段并单击save时,它会创建一个Entity类,我想将其作为新行添加到表中。逻辑工作正常,但当行插入表时,由于某种原因,表格如下所示:

https://i.stack.imgur.com/qJeuW.png

如果有人知道如何解决这个问题,我真的很感激帮助!

答案

你需要使用custom cell renderer in your JTable

数据的显示方式基于列的类。默认渲染器只是为列中的对象调用.toString()函数。如果列包含键值对,则它们的共同点显示为key = value。

您需要使用TableColumn方法setCellRenderer设置渲染器。您可以将此渲染器定义为仅显示该列中对象的值。

以上是关于DefaultTableModel addRow方法以格式添加行:column_name = column_value而不是column_value的主要内容,如果未能解决你的问题,请参考以下文章

Google GeoChart(Lavacharts 库)-> AddRow / AddRows 未在地图上呈现任何结果,尽管创建了值数组

DefaultTableModel 不刷新

即使查询数据,DefaultTableModel 也是空的

JAVA--DefaultTableModel内容清零

如何在 defaulttablemodel 上添加行

如何隐藏 DefaultTableModel 中的特定列以使其在表中显示?