问题
For example I want to execute something when user clicks on a button. Which do I use? The documentation didn't appear to make it very clear
UPDATE
A quick test shows that Widget Selected is triggered but not Default Selected.
In TasksView.main()
TasksView view = new TasksView(shell, SWT.None);
TasksController controller = new TasksController(view);
In TasksController
public class TasksController extends ControllerAbstract {
protected TasksView view;
public TasksController(TasksView view) {
this.view = view;
view.addTaskListener(new AddTaskListener());
}
protected class AddTaskListener implements SelectionListener {
@Override
public void widgetDefaultSelected(SelectionEvent arg0) {
System.out.println("Default Selected");
}
@Override
public void widgetSelected(SelectionEvent arg0) {
System.out.println("Widget Selected");
}
}
}
btw, Did I do MVC correctly?
回答1:
Use widgetSelected
. In fact, all the better is to simply extend SelectionAdapter
and only override the widgetSelected
method and completely ignore widgetDefaultSelected
.
回答2:
SelectionListener.widgetDefaultSelected(e)
has a toolkit dependent behavior. I usually just invoke SelectionListener.widgetSelected(...)
. (Note that this is not the default in SelectionAdapter.widgetDefaultSelected(e)
- you will have to do this yourself.
来源:https://stackoverflow.com/questions/9254310/java-swt-widgetselected-vs-widgetdefaultselected