我对 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
}
});
}
}
最佳答案
您可以简单地将逻辑放入事件处理程序中,以查看该控件是否是新控件的子控件并忽略它。类似以下内容:(我尚未测试代码,但我认为这应该适合您)
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
}
});
关于java - 当鼠标进入组件控件时,如何阻止 SWT 复合控件触发 MouseExit 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2400222/