2013-07-30 5 views
1

Я создал JTable с столбцом CellCaditor JComboBox. Это прекрасно работает. Однако, когда я пытаюсь извлечь выбранное значение в поле со списком, я получаю только то значение, которое мышь выбрала в определенной строке. Кажется, я не могу получить выбранное значение для каждой строки. вот мой код:Как получить выбранное значение JComboBox в 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()); 
    } 
+0

Итак, вы хотите получить все значения 'row' из строки, выбранной вами в' JTable'? – Smit

+0

№ После того, как пользователь отредактировал все поля таблицы, я хочу сохранить поля в адрес, который я создал. Проблема в том, что я не получаю выбранное значение JCombobox в строке. – unleashed

ответ

5

выпадающий список используется только для редактирования ячейки. Он не содержит данных для ячейки.

Вам нужно получить данные из таблицы, которая осуществляется с помощью:

table.getValueAt(...); 

или

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

в зависимости от конкретной потребности

Если вы все еще редактирования ячейки то данные еще не могут быть сохранены в модели. Для решения этой проблемы см .: Table Stop Editing.

+0

Спасибо, Камикр – unleashed

Смежные вопросы