在Java中,如何为同一数据类型在两个不同的列中设置一个单元格编辑器?

In Java, how do I set a cell Editor in two different columns for the same data type?

这是我的第一个问题,因为我是 Java 的小菜鸟,所以如果这是一个微不足道的问题,我深表歉意,但我找不到任何关于它的信息......

我的问题是:我有一个 Java 摆动姿势,Jtable。我用 table 模型填充了 table 并使用 table 渲染器来显示我想要的。

table 有 3 列:

col-0 = Object

col-1 = Date (just date)

col-2 = Date (just time).

我已经成功地为日期类型设置了编辑器 (jCalendar),但我希望第 1 列有一个 JCalendar(没问题),但在第 2 列, 我想插入一个 JSpinner 来介绍时间。

有没有办法为相同的数据类型设置不同的单元格编辑器(在我的例子中是日期)

您可以在您的自定义 TableRenderer 中覆盖方法 getTableCellRendererComponent,然后,通过检查列号您可以选择要 return 的组件。

public Component getTableCellRendererComponent(JTable table,
                                               Object value,
                                               boolean isSelected,
                                               boolean hasFocus,
                                               int row,
                                               int column)
{
  if(column == 1){
    return new JCalendar();
  }else if(column == 2){
    return new JSpinner(2015,07,31);
  }else{
    return super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
  }
}

Is there a way to have different cell editors for the samer data type (in my case is Date) ?

您将编辑器添加到 TableColumnModel 的特定列:

table.getColumnModel().getColumn(???).setCellEditor(???);