2

我有两个JTable。一个中有一定数量的记录JTable

加载第一个JTable后,我想加载相等数量的JCheckbox要在第二个表中创建的。

我有这种情况...... vl 通过方法中的两个表addCheckBox

private void addCheckBox(JTable procTableSrc, JTable procTableCk){

    CheckBoxRenderer checkBoxRenderer = new CheckBoxRenderer();
    EachRowRenderer rowRenderer = new EachRowRenderer();
    int rows = procTableSrc.getRowCount();

    DefaultTableModel dm = (DefaultTableModel)procTableCk.getModel();

    Object [] data = new Object[][]{{new Boolean(false)},{new Boolean(false)}}; 

    for(int i=1; i <=rows; i++){
        rowRenderer.add(i, checkBoxRenderer);           
        //model.addRow(new Object []{new Boolean(false)});
    }
}

请帮助我实现这一目标的代码。

4

1 回答 1

5

感谢您的编辑,但您可能仍想向我们展示更多信息并告诉我们您当前的代码导致了哪些错误。

关于你的“CheckBoxRenderer”类,你不需要这个。请阅读您可以在此处找到的 JTable 教程。在那里你会看到你需要做的就是覆盖你的表模型的getColumnClass方法来返回 Boolean.class 为感兴趣的列显示复选框。

运气。

编辑 1
还有什么是“行渲染器”,它有什么用途?要将信息添加到您的 JTable,您必须将行添加到它的模型中,我没有看到您的代码这样做。查看 DefaultTableModel API,您将在其中看到可能对您有很大帮助的 addRow(...) 方法。要么使用您的数据数组创建一个新的 DefaultTableModel 对象。事实上,这可能更好,因为您可以重写它的 getColumnClass() 方法,为需要显示复选框的列返回布尔值。

编辑 2
这也不会编译,因为您将其声明为一维数组并将其初始化为二维数组。:

Object [] data = new Object[][]

考虑执行以下操作:

  • 创建一个 Object 的二维数组并让它保存模型的数据。数组的第一个索引是 JTable 中显示的行数,第二个索引是列数。
  • 用您的布尔值填充每个列位置。
  • 创建一个新的 DefaultTableModel 对象,它覆盖 getColumnClass(...) 并让它为包含布尔值并需要显示复选框的列返回 Boolean.class。
  • 给它一个构造函数,允许您传入 2-D 对象数组,也可能是列标题的字符串数组。构造函数的第一行应该是对超级构造函数的调用,您需要将数组参数传递给此调用。
  • 在您刚刚创建的这个模型中调用您的 procTableCk 对象上的 setModel。
于 2011-08-07T10:41:46.237 回答