我想在最初的默认单元格编辑器组合框中选择一个值。当我在渲染器或编辑器中设置时,即使用户更改它,组合也始终显示相同的值,因为我在渲染器中设置了值。如何在渲染器中设置组合框值并允许用户对组合进行更改?下面是我的代码:
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);
}
在上面的代码中,我将仅在该特定行的值具有由“|”分隔的多个值时才显示组合。否则我将返回默认的渲染器。
我还想将组合值设置为数组中的特定值。但由于我在渲染器内设置,即使用户更改了组合值,它也始终显示相同的值。如何解决这个问题?
答案 0 :(得分:0)
对不起。这是我在代码的另一部分中犯的错误。在我的自定义表中,我覆盖了以下内容:
public Object getValueAt(int row, int col)
{
if(col==0)
{
return variables[row];
}
else if(col==1)
{
return values[row];
}
return null;
}
这使得列= 1的comboBox始终显示一个特定项。现在我删除了这个。并且单元格编辑器中的组合框值根据用户选择而变化。
我删除了渲染器并决定将其显示为默认单元格本身。当用户点击它时,我在DefaultCellEditor中创建了一个组合框,允许用户从下拉列表中选择一个值。
干杯。