1

我创建了一个带有 JComboBox CellEditor 列的 JTable。这很好用。但是,当我尝试通过组合框检索选定的值时,我只得到鼠标在特定行中选择的值。我似乎无法在每行的基础上获得选定的值。这是我的代码:

  addressList = new ArrayList<>(); 
    for(int currentRow = 0; currentRow < editAddressFrm.getAddressTable().getRowCount(); currentRow++)
    {

            //ADDRESS
    offenderAddress = new MyAddress();


    DefaultCellEditor ownerEditor = (DefaultCellEditor) editAddressFrm.getAddressTable().getCellEditor(currentRow, 1);       
    JComboBox ownerCb =(JComboBox) ownerEditor.getComponent();
    ListItem selectedItem =(ListItem) ownerCb.getSelectedItem();  //HERE IS WHERE I HAVE THE PROBLEM.I AM NOT GETTING THE VALUE FOR THE SPECIFIC ROW

    offenderAddress.setOwnerCode(selectedItem.getID());

    offenderAddress.setLine1(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 2).toString() 
            );

    offenderAddress.setLine2(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 3).toString() );

    offenderAddress.setCity(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 4).toString() );
    offenderAddress.setProvince(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 5).toString() );
    offenderAddress.setPostalZone(
            editAddressFrm.getAddressTable().getModel().getValueAt(currentRow, 6).toString() );
    }
4

1 回答 1

5

组合框仅用于编辑单元格。它不包含单元格的数据。

您需要从表中获取数据,该表通过以下方式完成:

table.getValueAt(...);

或者

table.getModel().getValueAt(...);

取决于您的确切要求

如果您仍在编辑单元格,则数据可能尚未保存到模型中。要解决此问题,请参阅:表格停止编辑

于 2013-07-30T22:03:04.967 回答