Java SWT画布是否提供鼠标移动/单击活动区域的工具?
我正在用Java和SWT创建一个应用程序,并在画布上生成一个工作区。我需要使画布上的某些区域(控件)在鼠标悬停或单击时触发事件。当然,这可以通过监听MouseMoveEvent并手动检查鼠标的位置来实现,但我想知道SWT是否提供了一种更简单的方法来实现Java SWT画布是否提供鼠标移动/单击活动区域的工具?,java,canvas,mouse,swt,Java,Canvas,Mouse,Swt,我正在用Java和SWT创建一个应用程序,并在画布上生成一个工作区。我需要使画布上的某些区域(控件)在鼠标悬停或单击时触发事件。当然,这可以通过监听MouseMoveEvent并手动检查鼠标的位置来实现,但我想知道SWT是否提供了一种更简单的方法来实现 谢谢据我所知,目前还没有自动化设备。您需要注册鼠标侦听器并手动调查x&y坐标 另一种方法可能是将单个Canvas对象添加到封闭的Canvas上。这样,就可以将侦听器添加到各个控件中。然而,这将使用更多的内存(因为底层对象有一个缓冲区,以及顶部的控
谢谢据我所知,目前还没有自动化设备。您需要注册鼠标侦听器并手动调查
x
&y
坐标
另一种方法可能是将单个Canvas
对象添加到封闭的Canvas
上。这样,就可以将侦听器添加到各个控件中。然而,这将使用更多的内存(因为底层对象有一个缓冲区,以及顶部的控件),重画将更加占用CPU
我个人倾向于第一种技巧。谢谢你的回答,保罗。我最终为每个控件创建了一个矩形对象的ArrayList。每当mousemove事件触发时,我循环遍历每个矩形并使用鼠标坐标调用Rectangle.contains()。结果证明,这个解决方案非常有条理 在我的例子中,控件事件是同质的(它们都做相同的事情),但如果任何人有多个控件操作,则可以使用Rectangle.data包含一个命令对象