SWT组合MouseDown事件未正确触发

时间:2014-01-10 07:37:37

标签: java combobox swt mouseclick-event

我正在使用一个SWT组合,当鼠标按下时,第一次点击时会显示一个日历弹出窗口并在第二次点击时隐藏弹出窗口等等。

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

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

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

1 个答案:

答案 0 :(得分:1)

首先,看一下这个问题: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();
}