Приведение будет работать, но приоритет приведения ниже, чем при разыменовании (.
), поэтому ваш пример кода пытается снизить результат (e.getSource()).toFront()
, что не работает (поскольку у него нет типа, поскольку toFront()
равно void
).
Так что
((ImageView) e.getSource() ).toFront();
будет работать.
Однако обычно лучше зарегистрировать другой обработчик для каждого просмотра изображения. Нет необходимости повторять код: просто используйте любую стандартную технику программирования, чтобы этого не делать. Например, вы можете написать метод:
private void registerEventHandler(ImageView imageView) {
imageView.setOnMouseDragged(e -> {
imageView.toFront();
imageView.setTranslateX(e.getSceneX() );
imageView.setTranslateY(e.getSceneY() );
});
// register other event handlers, as needed.
}
, а затем вызвать метод для каждого просмотра изображения (в al oop, если они у вас есть в какой-либо подходящей структуре данных).
В качестве альтернативы , вы могли бы создать метод, который создает представления изображений и регистрирует любые необходимые обработчики.
Помимо того, что эти методы являются, возможно, более чистым кодом, они также избегают понижающего преобразования, что в целом хорошо.