У меня есть такая группа:
leftPanel = new Group(subParentContainer, SWT.NONE);
leftPanel.setLayout(new RowLayout(SWT.VERTICAL));
leftPanel.setText("Group title");
Button firstTypeBtn = new Button(leftPanel, SWT.RADIO);
Button secondTypeBtn = new Button(leftPanel, SWT.RADIO);
Button thirdTypeBtn = new Button(leftPanel, SWT.RADIO);
firstTypeBtn.setText("Text 1");
firstTypeBtn.setData(myEnum.ONE);
firstTypeBtn.addListener(SWT.Selection, lst);
secondTypeBtn.setText("Text 2");
secondTypeBtn.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
fetchData(1);
}
});
thirdTypeBtn.setText("Text 3");
thirdTypeBtn.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
fetchData(2);
}
});
leftPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
как вы можете видеть, мои кнопки имеют аналогичный код для обработки кликов. Я хотел бы сделать одну общую переменную, которая будет обрабатывать события кликов. Но я не знаю, как этот единственный слушатель распознает, какая кнопка была нажата. Как я вижу, виджет кнопки имеет такой метод .setDate(Object object)
, это единственный метод, который, я думаю, может мне помочь. Итак, я сделал один единственный слушатель:
Listener lst = new Listener() {
@Override
public void handleEvent(Event event) {
System.out.println((Button) event.data);
}
};
и одно перечисление, которое поможет распознать кнопку:
public enum myEnum {
ONE, TWO, THREE;
}
Что я думаю сделать с этим кодом — я назначу enum каждой кнопке и тогда в одном слушателе они будут распознаваться. Как вы можете видеть в области кода выше, я попытался добавить такое решение к первой кнопке. Но когда я нажал на нее, я увидел в своей консоли только: null
. У меня есть два варианта, почему мое решение не работает: я сделал это неправильно или моя идея совершенно невозможна. Может быть кто-то на этом сайте делал что-то подобное и сможет мне помочь?