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 に答える