私のテーブルの行の 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 クラスでインデックスを取得できますか?