我正在尝试为鼠标拖动事件创建一个EventHandler。我将使用相同的处理程序对多个ImageView执行相同的操作。现在这就是我所做的。
static EventHandler<MouseEvent> dragHandler = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
e.getSource().toFront();
e.getSource().setTranslateX(e.getSceneX() );
e.getSource().setTranslateY(e.getSceneY() );
}
};
但是显然我不能使用toFront或setTranslate方法或用于ImageViews的任何东西,因为e.getSource返回一个Object,而这些是ImageView方法,不适用于Object类型。而且显然我不能通过执行
将其简单地投射到ImageView中 (ImageView)( e.getSource() ).toFront();
我可以简单地使用内部类和lambda表达式,但我认为必须有一种更有效的方法,而不是仅对每个ImageView复制粘贴相同的行(例如15次)。所以,请告诉我。
提前感谢。
强制转换有效,但强制转换的优先级低于解引用(.
)的优先级,因此您的代码示例尝试将(e.getSource()).toFront()
的结果向下转换,该结果无效(因为无类型,因为[ C0]是toFront()
。
所以
void