【问题标题】:How do I add an empty row to JTable?如何向 JTable 添加一个空行?
【发布时间】:2013-06-02 23:14:10
【问题描述】:

有什么办法可以在 jtable 中添加空行,其中第一列是布尔值,所以它不会显示自动生成的复选框?

我需要它来分隔行组。 我尝试使用下面的代码,但它不起作用:

model.addRow(new Object[]{null,null,null,null});

【问题讨论】:

  • 等等……是……还是不是布尔值??你不想要一个正确的复选框吗?
  • 我想让一些行完全为空,以便它们用作分隔符。但在休息时,我想保留复选框。

标签: java swing jtable jcheckbox tablecellrenderer


【解决方案1】:

我想让一些行完全为空,以便它们用作分隔符。但在休息时我想保留复选框

您需要存储空值,而不是在模型中存储 Boolean.TRUE 或 Boolean.FALSE。

那么你有两个选择:

  1. 创建一个自定义渲染器,正常显示布尔值并识别空值并且不显示任何内容。

  2. 重写 JTable.getCellRenderer() 方法。当值为 null 时返回 Object.class 的渲染器。 Oject 类的默认渲染器会将 null 显示为空字符串。

【讨论】:

    【解决方案2】:

    对于第一列的 TableColumn 实例,创建一个单元格渲染器(通过实现 javax.swing.table.TableCellRenderer)为不同于 null 的布尔值渲染一个复选框 (javax.swing.JCheckBox),并渲染一个空标签(javax.swing.JLabel) 用于空值。您无法通过提供 DefaultTableCellRenderer (javax.swing.table.DefaultTableCellRenderer) AFAICT 来做到这一点。

    然后使用 TableColumn.setCellRenderer 设置 TableColumn 实例的表格单元格渲染器属性

    【讨论】:

      【解决方案3】:

      试试

      model.addRow(new Object[]{Boolean.FALSE,null,null,null});
      

      【讨论】:

      • 感谢您的回复。我已经尝试过了,但它给出的结果与前面的代码相同 = 一个空复选框。
      • “空”是什么意思?未选中?如果您想要一个选中的复选框,您是否尝试过 Boolean.TRUE?
      猜你喜欢
      • 1970-01-01
      • 2011-06-21
      • 2018-08-20
      • 2015-07-10
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多