DefaultTableModel addRow 方法以以下格式添加行:column_name = column_value 而不仅仅是 column_value
DefaultTableModel addRow method adds row in format: column_name = column_value instead of just 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 是扩展 JDialog
的 AddDialog
的实例,当我填写对话框的字段并单击保存时,它会创建一个 Entity
class,我想要添加到 table 作为新行。逻辑工作正常,但是当行被插入到 table 时,出于某种原因 table 看起来像这样:
如果有人知道我该如何解决这个问题,我将不胜感激!
您需要使用 custom cell renderer in your JTable。
数据的显示方式取决于列的 class。默认渲染器只是为列中的对象调用 .toString() 函数。如果该列包含一个键值对,它们通常显示为键=值。
您需要使用 TableColumn 方法 setCellRenderer 设置渲染器。您可以将此渲染器定义为仅显示该列中对象的值。
我在 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 是扩展 JDialog
的 AddDialog
的实例,当我填写对话框的字段并单击保存时,它会创建一个 Entity
class,我想要添加到 table 作为新行。逻辑工作正常,但是当行被插入到 table 时,出于某种原因 table 看起来像这样:
如果有人知道我该如何解决这个问题,我将不胜感激!
您需要使用 custom cell renderer in your JTable。
数据的显示方式取决于列的 class。默认渲染器只是为列中的对象调用 .toString() 函数。如果该列包含一个键值对,它们通常显示为键=值。
您需要使用 TableColumn 方法 setCellRenderer 设置渲染器。您可以将此渲染器定义为仅显示该列中对象的值。