общие слушатели для кнопок SWT-радио - PullRequest
2 голосов
/ 16 марта 2011

Я разрабатываю приложение SWT, и в одной конкретной форме есть 14 пар переключателей Да-Нет.Каждая из этих пар имеет текстовое поле, связанное с ними.Поэтому, если пользователь выбирает «Да», соответствующее текстовое поле должно быть редактируемым, иначе недоступным для редактирования.Я нахожу написание 28 слушателей радиокнопок действительно пугающим.Поскольку переключатели не имеют ничего общего, кроме как просто сделать текстовое поле редактируемым / недоступным для редактирования, я надеялся, что в SWT есть какой-то общий тип слушателей, который будет применим к набору переключателей, указанных в массиве или тому подобное.Существуют ли какие-либо фреймворки или мне нужно написать отдельных слушателей?

Редактировать
Я пытаюсь запустить событие, только когда выбран переключатель

rdoExperience.addListener(SWT.CHECK, new RadioButtonSelection( txtExperience));

, но SWT.CHECK вызывает событие при наведении курсора мыши на переключатель.Я тоже пытался использовать SWT.SELECTED, но он тоже не работает, и я не могу найти другие подходящие константы SWT.Что мне использовать?

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Вы можете создать один SelectionListener и добавить его к каждой из переключателей. Затем вы можете определить, какая кнопка была нажата из события выбора, и сопоставить ее с текстовым полем. Для отображения вы можете использовать массив или хеш-таблицу.

0 голосов
/ 16 марта 2011

Хороший вопрос. Извините, я не знаю ничего подобного.

Однако вы создаете его самостоятельно: вместо того, чтобы писать анонимный прослушиватель для каждой кнопки, вы можете написать по одному - скажем, MyButtonListener - и указать в качестве аргумента текстовое поле button . Чем вы создаете экземпляр MyButtonListener с соответствующим текстовым полем в качестве аргумента. Чем в Слушателях соответствующим методом обратного вызова вы включаете или отключаете текстовое поле.

Редактировать: Мой плохой. Конечно, я имел в виду, что вы могли бы дать ему текстовое поле как radioBtn.addListener(SWT.SELECTED, new MyButtonListener(textfield1));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...