3

可能重复:
为布尔值设置 Jtable/列渲染器

现在我的 Jtable 中有:

在此处输入图像描述

但我想拥有:

在此处输入图像描述

因此,我想,我必须将我的真/假转换为对象,例如:

  Object rowData[][] = { { "1", Boolean.TRUE }, { "2", Boolean.TRUE }, { "3", Boolean.FALSE },
      { "4", Boolean.TRUE }, { "5", Boolean.FALSE }, }; 

现在我得到这样的数据:

    int i=0;
    data=new Object[tupel.size()][1];
    while(i<tupel.size()){
        row=tupel.get(i);
        data[i][0]=new Boolean(row.isTrueorFalse());//my "Boolean method"
        i++;
    }
}

所以我的问题是:

如何将我的数据转换为对象以便显示刻度?

更新

isTrueorFalse 方法:

public boolean isTrueorFalse() {
        return isTrueorFalse;
}
4

4 回答 4

5

JTable 具有对 Boolean value 的内置支持,然后渲染器/编辑器显示 JCheckBox

必须用适当的列类覆盖XxxTableModel 中的列

@Override
public Class getColumnClass(int column) {
    return getValueAt(0, column).getClass();
}
  • 例如

  • 为了获得更好的帮助,请尽快发布SSCCE演示您的问题,简短、可运行、可编译。否则这里的每一个答案都可能是黑暗的镜头

于 2012-10-24T06:11:00.483 回答
2

如果你确定你想要data这样的数组,那么你可以在下面做。我不确定这是你需要的。

data[i][0]= i;
data[i][1] = row.isTrueorFalse();

然后,您可以在表模型中设置数据,如下所示

tableModel.set((Integer)data[i][0], (Boolean) data[i][1]);
于 2012-10-24T05:50:53.180 回答
2

您应该创建自己的表模型

寻找以下几点:

如果程序员没有提供表模型对象,JTable 会自动创建一个 DefaultTableModel 的实例。

以及以下内容:

另一方面,SimpleTableDemo 的自动创建的表模型不知道 # of Years 列包含数字(通常应该是右对齐并具有特定格式)。它也不知道 Vegetarian 列包含布尔值,可以用复选框表示。

构造应该如下所示:

JTable table = new JTable(new MyTableModel());

而不是使用JTable(Object[][] rowData, Object[] columnNames)or JTable(Vector rowData, Vector columnNames)。在这种情况下,它使用DefaultTableModel,它不够智能,无法将您的布尔值显示为刻度(复选框)。

它还有一个示例代码来帮助您实现您想要实现的目标。

于 2012-10-24T06:04:30.940 回答
2
    data[i][0]=Boolean.valueOf(row.isTrueorFalse());

这不会创建任何新的 Boolean 对象,只会创建 Boolean.TRUE 或 Boolean.FALSE。

于 2012-10-24T05:58:40.770 回答