sirve que para mousepressed eventos evento java events eclipse-plugin swt

que - mousepressed java



¿Cómo puedo evitar que un control compuesto SWT active un evento MouseExit cuando el mouse ingresa un control de componente? (1)

He subclasificado org.eclipse.swt.widgets.Composite para crear un nuevo control compuesto. Quiero capturar eventos MouseEnter y MouseExit en este control, pero el problema que tengo es que cuando el mouse está sobre un componente en el control (por ejemplo, una etiqueta), se desencadena el evento MouseExit, aunque la etiqueta es parte del todo Compuesto.

¿Hay alguna manera de evitar que se dispare este evento? Solo quiero ver el evento si el mouse deja el límite total del control. Aquí hay un código de ejemplo para mostrarle lo que quiero decir.

public class MyControl extends Composite{ Label label; public MyControl(Composite parent, String label) { super(parent, SWT.NONE); label = new Label(this,0); label.setText(label); this.addListener(SWT.MouseEnter, new Listener() { @Override public void handleEvent(Event event) { // handle this event } }); this.addListener(SWT.MouseExit, new Listener() { @Override public void handleEvent(Event event) { // handle this event } }); }

}


Simplemente puede poner una lógica en su controlador de eventos para ver si el control es hijo de su nuevo control e ignorarlo. Algo como lo siguiente: (No he probado el código, pero creo que esto debería funcionar para usted)

this.addListener(SWT.MouseExit, new Listener() { @Override public void handleEvent(Event event) { for (Control control : ParentClass.this.getChildren()) { if (control == event.item) return; } // handler logic goes here } });