【发布时间】:2016-03-05 22:29:09
【问题描述】:
我的 GUI 中有一个(或多或少)空的 JTable,一开始没有任何 JCheckBoxes。按下按钮后,我想根据数组的内容用名称(字符串)和 JCheckBoxes 填充表格。具有名称的部分已经可以正常工作,但是我无法将单个单元格的类更改为布尔值,而是在 JCheckBox 实际应该位于的 JTable 中出现 true 或 false。我知道如果在开始时将列类型设置为布尔值,则可以使用 JCheckBoxes 填充完整的列。
我现在的问题是是否可以更改单个单元格的列类型。
这是创建 JTable 的代码:
table = new JTable();
table.setRowMargin(3);
table.setRowHeight(25);
table.setFillsViewportHeight(true);
table.setModel(new DefaultTableModel(
new Object[][] {
{null, "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"},
{"", "2016-02-29", "2016-03-01", "2016-03-02", "2016-03-03", "2016-03-04"},
{" 1. Lesson", null, null, null, null, null},
{" 2. Lesson", null, null, null, null, null},
{" 3. Lesson", null, null, null, null, null},
{" 4. Lesson", null, null, null, null, null},
{" 5. Lesson", null, null, null, null, null},
{" 6. Lesson", null, null, null, null, null},
{" 7. Lesson", null, null, null, null, null},
{" 8. Lesson", null, null, null, null, null},
{" 9. Lesson", null, null, null, null, null},
{" 10. Lesson", null, null, null, null, null},
},
new String[] { "Empty", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" }
)
{
Class[] columnTypes = new Class[]
{
String.class, Object.class, Object.class, Object.class, Object.class, Object.class
};
public Class getColumnClass(int columnIndex)
{
return columnTypes[columnIndex];
}
});
table.setBorder(new LineBorder(new Color(0, 0, 0)));
table.setBounds(381, 11, 518, 300);
panel.add(table);
这是JTable内容发生变化的部分:
public void tableUpdate(Object[][] a)
{
for(int row = 0; row < 11; row++)
{
for(int column = 0 ; column < 5; column++)
{
table.setValueAt(a[column][row], row+1, column+1);
}
}
}
如果您需要更多信息,请提前询问我,非常感谢。
【问题讨论】:
-
从
getColumnClass中返回Boolean.class以获得您想要显示为复选框的列 -
问题是我不想要一整列只有复选框,我想要名称(字符串)和复选框,具体取决于数组的内容
-
好吧,这不是 JTable 的工作原理。一列只假设有单一类型的数据
-
嗯好吧,你知道我不必创建 72 个标签和 50 个复选框的解决方案吗?
-
我想这取决于为什么您需要在单个列中使用两个不同的值。可以做但是很复杂
标签: java swing jtable jcheckbox