代码之家  ›  专栏  ›  技术社区  ›  Jonah

SWT画布是否提供鼠标移动/单击活动区域的工具?

  •  2
  • Jonah  · 技术社区  · 14 年前

    我正在用Java和SWT创建一个应用程序,并在画布上生成一个工作区。我需要使画布上的某些区域(控件)在鼠标悬停或单击时触发事件。当然,这可以通过监听MouseMoveEvent并手动检查鼠标的位置来完成,但是我想知道SWT是否提供了一种更简单的方法来完成。

    谢谢

    2 回复  |  直到 14 年前
        1
  •  2
  •   Paul Lammertsma    14 年前

    据我所知,没有自动化的设备。您需要注册鼠标侦听器并调查 x &安培; y 手动坐标。

    另一种方法可能是添加 Canvas 对象到封闭对象上 帆布 . 这样,您可以将侦听器添加到各个控件。但是,这将使用更多的内存(因为底层对象有一个缓冲区,以及顶部的控件),并且重绘将需要更多的CPU。

    我个人更喜欢第一种技术。

        2
  •  0
  •   Jonah    14 年前

    谢谢你的回答,保罗。我终于为每个控件创建了一个矩形对象的ArrayList。每当mousemove事件触发时,我就循环遍历每个矩形并用鼠标坐标调用Rectangle.contains()。结果这个解决方案很有条理。

    在我的例子中,控件事件是同质的(它们都做相同的事情),但是如果任何人有多个控件操作,则可以使用Rectangle.data来包含命令对象。