我有一个带有两列的JTable:一个键名和值。在值列中,允许多种数据类型,如下图所示:
因此,在第1列中,我可能在第1行中有一个布尔值,在第2行中有一个字符串。但方法getColumnClass(...)
只允许我为完整列设置数据类型。
有没有办法设置列行特定的数据类型?
问候, mythbu
答案 0 :(得分:1)
同一列不能有两种数据类型。但对于你的情况,我的建议是使用渲染。
将列数据类型定义为包含JPanel
的组件类。
渲染列。您的Renderer类将Panel返回到列。它应该有constraint
,基于此应该向Panel添加组件并返回Panel。
此示例显示了如何在这种情况下使用渲染。
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
文字。
P.S:这只是一次尝试。即使我以前没有这样做过。如果我错了,请纠正我。