У меня есть существующее содержимое значений в JComboBox, расположенном в столбце JTable. То, что я пытаюсь сделать, это прочитать значение из существующего объекта и обновить ComboBox, чтобы немедленно показать это значение.
Моей первой попыткой было:
// Sets up properties ComboBox
propColumn = table.getColumnModel().getColumn(ENV_PROPERTIES_COLUMN);
propComboBox = new JComboBox();
propComboBox.addItem(""); // For initial empty string
constructEnvProperties();
/**
* Construct Environment Properties comboBox options
*/
public void constructEnvProperties(){
Vector<IWM781EnvProfileProperties> recordSet = dataMapperDatabase.getEnvironmentalProperties();
// Iterate through vector and update combo box
for(int i = 0; i < recordSet.size(); i++){
logger.debug("Property: " + recordSet.get(i).getProp781Property());
propComboBox.addItem(recordSet.get(i).getProp781Property());
}
}
Теперь, когда я хочу обновить ComboBox до выбранного индекса, я использую код:
if(record.getProp785MapProperty().compareTo("") != 0){
ComboBoxModel model = propComboBox.getModel();
int size1 = model.getSize();
for (int i1 = 0; i1 < size1; i1++){
String comparision = record.getRegv785MapRegister();
if(comparision.equals(propComboBox.getItemAt(i1)))
propComboBox.setSelectedIndex(i1);
}
}
propColumn.setCellRenderer(new ComboBoxCellRenderer());
propColumn.setCellEditor(new DefaultCellEditor(propComboBox));
Когда я отлаживаю это, он работает точно так, как я ожидал, но таблица не обновляется.
Я возился с созданием собственного DefaultCellEditor для изменения некоторых функций. Это позволило мне гибко выбирать определенные ячейки для комбинированных полей, и в настоящее время я пытаюсь изменить это как решение.