1

JTable 列内にある JComboBox 内に既存の値のコンテンツがあります。私がやろうとしているのは、既存のオブジェクトから値を読み取り、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 を作成してみました。これにより、特定のセルを選択してコンボ ボックスを含める柔軟性が得られました。現在、これを解決策として変更しようとしています。

4

1 に答える 1