gpt4 book ai didi

java - SWT 组合 MouseDown 事件未正确触发

转载 作者:行者123 更新时间:2023-12-01 13:38:37 28 4
gpt4 key购买 nike

我正在使用一个 SWT 组合,在鼠标按下事件上,第一次单击时将显示日历弹出窗口,第二次单击时将隐藏弹出窗口,依此类推。

 mCombo.addListener(SWT.MouseDown, new Listener() {
public void handleEvent(Event event) {
showCalendar();
}
});

当我单击文本区域时,每次都会触发 MouseDown 事件。但是,当我单击右上角的箭头时,MouseDown 事件是第一次触发,而不是第二次。

请让我知道解决该问题的任何解决方案。

最佳答案

首先看一下这个问题:SWT Listen to Combo close .

Combo 不支持“关闭事件”的事件。如果您可以使用 CCombo 来代替,那么您可以只监听 SWT.MouseDown,因为它也会在箭头上触发。

public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
shell.setText("StackOverflow");

CCombo combo = new CCombo(shell, SWT.DROP_DOWN | SWT.READ_ONLY);
combo.add("First");
combo.add("Second");

Listener listener = new Listener()
{
@Override
public void handleEvent(Event e)
{
System.out.println(e);
}
};

combo.addListener(SWT.MouseDown, listener);
combo.addListener(SWT.Selection, listener);

shell.pack();
shell.open();

while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}

display.dispose();
}

关于java - SWT 组合 MouseDown 事件未正确触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21038572/

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