2012-02-13 25 views
5

Por ejemplo, quiero ejecutar algo cuando el usuario hace clic en un botón. ¿Cuál uso? La documentación no parece que sea muy claroJava SWT: widgetSeleccionado vs widgetDefaultSelected

ACTUALIZACIÓN

Una prueba rápida muestra que Widget seleccionado se activa pero no seleccionado por defecto.

En TasksView.main()

TasksView view = new TasksView(shell, SWT.None); 
TasksController controller = new TasksController(view); 

En 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"); 

     } 

    } 
} 

por cierto, qué he hecho MVC correctamente?

Respuesta

7

Use widgetSelected. De hecho, lo mejor es simplemente extender SelectionAdapter y solo anular el método widgetSelected e ignorar por completo widgetDefaultSelected.

4

SelectionListener.widgetDefaultSelected(e) tiene un comportamiento que depende del juego de herramientas. Usualmente solo invoco SelectionListener.widgetSelected(...). (Tenga en cuenta que este no es el valor predeterminado en SelectionAdapter.widgetDefaultSelected(e) - tendrá que hacer esto usted mismo.