Я работаю над программой, которая использует две таблицы. Первая таблица имеет прослушиватель выбора, который добавляет новые элементы во вторую таблицу. В зависимости от значения первой таблицы, я хочу, чтобы другой слушатель выбора был добавлен ко второй таблице. Если значение является чем-то другим, я хочу, чтобы слушатель выбора был удален. Я могу заставить слушателя выбора быть добавленным ко второй таблице, но я не могу удалить его. Если для первой таблицы требуется, чтобы во второй таблице был прослушиватель выбора, а прослушиватель выбора выглядит удвоенным.
tblFirst.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent arg0) {
TableItem ti = tblFirst.getSelection()[0];
String selectedText = ti.getText();
SelectionListener myListener = new SelectionListener(){
@Override
public void widgetSelected(SelectionEvent arg0) {
//do something here
}
}
if(selectedText.equals("sometext")) {
tblSecond.removeSelectionListener(myListener);
tblSecond.addSelectionListener(myListener);
}
}
В приведенном выше примере SelectionListener добавляется каждый раз, когда я выбираю элемент с текстом «sometext». Если я выбрал элемент три раза, SelectionListener запускается три раза. Утилита removeSelectionListener не удаляет сначала список выбора.
Как мне сделать эту работу?