【问题标题】:Fire an event on mouseClick in SWT?在 SWT 中触发 mouseClick 事件?
【发布时间】:2012-01-11 22:54:18
【问题描述】:

在SWT中,对于MouseListener接口,可用的方法有mouseUp()mouseDown()mouseDoubleClick()

如何根据用户点击触发事件?

我们可以通过 mouseUp()mouseDown() 的结合来做到这一点,但是在 SWT 中没有像 mouseClick() 方法这样的简单解决方案吗?

谢谢。

【问题讨论】:

  • 什么样的对象?只是一个Composite? (大多数本机包装器类型都有 SelectionListeners 来实现这一点,但鼠标向下和鼠标向上是明确的。“单击”较少。)
  • 我正在使用 GC(GraphicsContext) 绘制图像当用户点击图像时如何触发事件?
  • 你写“如何根据用户点击触发事件?”你是什么意思? SWT 监听器监听来自显示的事件...

标签: java mouselistener swt


【解决方案1】:

如何定义鼠标点击事件?鼠标按下然后鼠标向上,鼠标不离开控件的边界(否则它将是拖动开始),对吧?根据该定义,鼠标单击事件不能与单个点相关联,而是与区域 (1) 或控件 (2) 相关联。第一种情况不适合通用 SWT 事件,它只有一个位置(x 和 y),您仍然需要额外的代码来检查点击区域是否在您的图像内。在第二种情况下,鼠标单击只能使用控件(而不是位置)来定义,该事件对您来说毫无用处。

当您实现了自己的单击检测后,您可以在您喜欢的控件上触发任何事件,即使是那些未由 SWT 定义的事件。

【讨论】:

  • 我没有得到 mouseClick() 事件将无用的上下文。你能解释得更清楚一点吗?
  • @ynwa 更新了我的答案。这只是理论上的,并不会改变 SWT 中没有 MouseClick 事件的事实:)
【解决方案2】:

要对按钮上的鼠标单击事件做出反应,您可以使用 SelectionListener,这样的事情应该可以解决问题:

button.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            super.widgetSelected(e);
            System.out.println("click!");
        }
    });

【讨论】:

    猜你喜欢
    • 2014-09-04
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    相关资源
    最近更新 更多