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

Java SWT画布是否提供鼠标移动/单击活动区域的工具?,java,canvas,mouse,swt,Java,Canvas,Mouse,Swt,我正在用Java和SWT创建一个应用程序,并在画布上生成一个工作区。我需要使画布上的某些区域(控件)在鼠标悬停或单击时触发事件。当然,这可以通过监听MouseMoveEvent并手动检查鼠标的位置来实现,但我想知道SWT是否提供了一种更简单的方法来实现 谢谢据我所知,目前还没有自动化设备。您需要注册鼠标侦听器并手动调查x&y坐标 另一种方法可能是将单个Canvas对象添加到封闭的Canvas上。这样,就可以将侦听器添加到各个控件中。然而,这将使用更多的内存(因为底层对象有一个缓冲区,以及顶部的控

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


谢谢

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

另一种方法可能是将单个
Canvas
对象添加到封闭的
Canvas
上。这样,就可以将侦听器添加到各个控件中。然而,这将使用更多的内存(因为底层对象有一个缓冲区,以及顶部的控件),重画将更加占用CPU


我个人倾向于第一种技巧。

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

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