在JTable中使用JComboBox作为单元格编辑器并保存更改

时间:2012-03-14 18:34:00

标签: java swing jtable jcombobox

我使用JComboBox作为JTable的单元格编辑器。当我从ComboBox的下拉列表中选择一个值时,setValueAt没有被调用。我知道这是因为我已经覆盖了这个功能。根据在此单元格中选择的值,固定同一表格的另一个单元格中的值。另外,我需要知道这个事件的actionListener是什么,即当我更改ComboBox中的值时。

只有当焦点更改为表格中的另一个单元格时才会调用setValueAt,只需在表格外单击也无济于事。

@Override 
public void setValueAt(Object o,int row,int col)
{
    super.setValueAt(o, row, col);

    if(((String)o).matches("1"))
    {
        super.setValueAt(o, col-1, row+1);
        return;
    }

    if(((String)o).contains("/"))
        super.setValueAt(((String)o).substring(2), col-1, row+1);
    else
        super.setValueAt("1/"+(String)o, col-1, row+1);
}

1 个答案:

答案 0 :(得分:1)

我刚刚找到了路......

我需要将一个actionListener添加到我作为CellEditor类成员创建的JComboBox组件中,并且在侦听器函数中,我需要调用stopCellEditing以便调用setValueAt ...