gpt4 book ai didi

java - 当鼠标进入组件控件时,如何阻止 SWT 复合控件触发 MouseExit 事件?

转载 作者:行者123 更新时间:2023-11-30 05:13:44 25 4
gpt4 key购买 nike

我对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com