0

我最初想在默认单元格编辑器组合框中选择一个值。当我在渲染器或编辑器中设置它时,即使用户更改它,组合总是显示相同的值,因为我在渲染器中设置值。如何在渲染器中设置组合框值并允许用户对组合进行更改?下面是我的代码:

public TableCellRenderer getCellRenderer(int row, final int column) {
if (column == 1) {    
    TableCellRenderer renderer = new TableCellRenderer() {

        @Override
        public Component getTableCellRendererComponent(JTable arg0, Object arg1,boolean arg2, boolean arg3, int row, int col) {             
            String text="";
            Component  comp;


            if(lovArray[row]!=null && lovArray[row].split("\\|").length>1)
            {
                JComboBox combo = new JComboBox(lovArray[row].split("\\|"));
                comp =combo;
                //combo.setSelectedItem(values[row]);
            }
            else
            {
                comp = CustomTable.super.getCellRenderer(row, col).getTableCellRendererComponent(arg0, arg1, arg2, arg3, row, col);
            }                               

            return comp;
        }
    };      

    return renderer;
}

return super.getCellRenderer(row, column);

}

在上面的代码中,只有当该特定行的值具有多个由“|”分隔的值时,我才会显示一个组合。否则我将返回默认渲染器。

我还想将组合值设置为数组中的特定值。但由于我在渲染器内部设置,即使用户更改组合值,它也始终显示相同的值。如何解决这个问题?

4

1 回答 1

0

对不起。这是我在代码的另一部分犯的错误。在我的自定义表中,我覆盖了以下内容:

public Object getValueAt(int row, int col)
{
if(col==0)
{
    return variables[row];
}
else if(col==1)
{
    return values[row];
}

return null;
}

这使得 column=1 处的组合框始终显示一个特定项目。现在我已经删除了这个。并且单元格编辑器中的组合框值根据用户选择而变化。

我已删除渲染器并决定将其显示为默认单元格本身。当用户单击它时,我在 DefaultCellEditor 中创建了一个组合框,允许用户从下拉列表中选择一个值。

干杯。

于 2013-09-25T13:20:36.933 回答