Как я могу запретить составному элементу управления SWT запускать событие MouseExit, когда мышь входит в компонентный элемент управления? - PullRequest
1 голос
/ 08 марта 2010

Я создал подкласс org.eclipse.swt.widgets.Composite для создания нового составного элемента управления. Я хочу перехватить события MouseEnter и MouseExit в этом элементе управления, но проблема у меня заключается в том, что когда указатель мыши находится над компонентом в элементе управления (скажем, надписью), происходит событие MouseExit, даже если метка является частью целого Композитный.

Есть ли способ остановить это событие? Я хочу видеть событие, только если мышь покидает общую границу элемента управления. Вот пример кода, чтобы показать вам, что я имею в виду.

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
        }           
    });
}

}

1 Ответ

2 голосов
/ 08 марта 2010

Вы можете просто вставить логику в свой обработчик событий, чтобы увидеть, является ли элемент управления дочерним элементом вашего нового элемента управления, и игнорировать его. Что-то вроде следующего: (Я не проверял код, но я думаю, что это должно работать для вас)

    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
        }           
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...