0

私のテーブルの行の 1 つは ComboBox です。「はい」、「いいえ」、「両方」のいずれかを選択できます。「両方」を選択した場合、テーブルを構築しているデータ配列に変更を加え、テーブルを更新する必要があります。以前の投稿で、Both の else ステートメントでロジックを構築することが提案されました。

protected void setValue(Object element, Object value) 
{
   if((element instanceof AplotDatasetData) && (value instanceof Integer)) {
        Integer choice = (Integer)value;
        String option = ((AplotDatasetData)element).getMarkupValue();;
        if(choice == 0) {
            option = "No";
        }    
        else if(choice == 1) {
            option = "Yes";
        }    
        else {
            option = "Both";
            abd.getIndexOfSelectedBoth(); <<<<<<<<<
        }    
       ((AplotDatasetData)element).setMarkupValue(option);
        getViewer().update(element, null);
    }
}

上記のコードはクラス OptionEditingSupport にあります。

テーブルは AplotBaseDailog クラスにあります。

そのため、OptionEditingSupport クラスでは、AplotBaseDailog クラスをインポートして割り当てました。

AplotBaseDialog abd;

次に、Both に変更した列の行インデックスを取得するメソッドを AplotBaseDailog クラスに記述しました。配列からデータを取得するには、インデックス値が必要です。

 public void getIndexOfSelectedBoth() {
     int row = viewer.getTable().getSelectionIndex();
     AplotDataModel.getInstance().rebuildDataArray(row);
     updateTableViewer();
  }

次に、行のインデックスを dataModel クラスのメソッドに渡します。データ配列を持つ dataModel クラスにあります。

ここで車輪を再発明していると思います。このプロセスを行うためのより良い方法が必要です。現在、すべてのコードが配置されているため、AplotBaseDialog を呼び出す行で Null Pointer Error が発生しています。

else {
        option = "Both";
        abd.getIndexOfSelectedBoth(); <<<<----
      }  

OptionEditingSupport クラスでインデックスを取得できますか?

4

1 に答える 1

1

AplotDatasetDataしたがって、「両方」が選択されたのインデックスを検索する必要があります。

あなたのModelProviderAPlotDataModel)にはListあなたのデータが含まれていますよね?

それぞれListがメソッドを実装しindexOf(Object)ます。したがって、このメソッドを使用して、現在のオブジェクトのインデックスを取得できます。

AplotDatasetData selected = ...
int index = AplotDataModel.getInstance().getIndexOf(selected);

モデル内:

public int getIndexOf(APlotDatasetData object)
{
    return LIST_HOLDING_YOUR_DATA.indexOf(object);
}
于 2012-10-15T07:46:08.303 に答える