我有一个包含两列的 JTable:键名和值。在值列中允许有多种数据类型,如下图所示:
所以在第 1 列中,我可能在第 1 行有一个布尔值,在第 2 行有一个字符串。但该方法getColumnClass(...)
只允许我为整个列设置数据类型。
有没有办法设置列行特定的数据类型?
问候,神话
我有一个包含两列的 JTable:键名和值。在值列中允许有多种数据类型,如下图所示:
所以在第 1 列中,我可能在第 1 行有一个布尔值,在第 2 行有一个字符串。但该方法getColumnClass(...)
只允许我为整个列设置数据类型。
有没有办法设置列行特定的数据类型?
问候,神话
同一列不能有两种数据类型。但是对于您的情况,我的建议是使用渲染。
阅读编辑器和渲染器。
将列数据类型定义为包含JPanel
.
渲染列。您的 Renderer 类将面板返回到该列。它应该有一个constraint
,基于您应该将组件添加到面板并返回面板。
这个例子展示了如何在这些情况下使用渲染。
class PanelCellRenderer extends JPanel implements TableCellRenderer {
public Component getTableCellRendererComponent(final JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
// row number is used as a constraint.
if(row == 0) {
this.add( new JTextField("", 20));
} else if(row == 1) {
this.add( new JCheckBox());
} else if(row == 2) {
this.add( new JButton());
} else {
this.add( new JLabel("Row-4"));
}
return this;
}
}
// 输出:
第一行是一个带有 的面板JTextField
。同样,第 2、3 行有JCheckBox
和JButton
。第 4 行有一个JLabel
带文本。
PS:这只是一个尝试。即使我以前没有这样做过。如果我错了,请纠正我。