我有两个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)});
}
}
请帮我一个代码来实现这一目标。
答案 0 :(得分:5)
感谢您的编辑,但您仍可能希望向我们展示更多内容并告诉我们您当前代码导致的错误。
关于“CheckBoxRenderer”类,您不需要这个。请阅读JTable教程,您可以找到here。在那里,您将看到您需要做的就是覆盖表模型的getColumnClass
方法,以返回感兴趣的列的Boolean.class,以显示复选框。
运气。
编辑1
还有什么是“行渲染器”,它的用途是什么?要向JTable添加信息,必须向其模型添加行,并且我看不到您的代码正在执行此操作。看看DefaultTableModel API,你会看到addRow(...)方法,它可以帮助你很多。或者用数据数组创建一个新的DefaultTableModel对象。实际上,这可能更好,因为您可以覆盖其getColumnClass()方法以返回需要显示复选框的列的布尔值。
编辑2
此外,由于您将其声明为一维数组并将其初始化为二维数组,因此无法编译。:
Object [] data = new Object[][]
考虑执行以下操作: