我试图最小化ImageView单击和Button单击上的窗口。它适用于按钮,但不适用于ImageView。下面是Button的代码:

Stage stage = null;

stage = (Stage) ((Button) event.getSource()).getScene().getWindow();
stage.setIconified(true);


我该如何使用ImageView?

尝试了与按钮相同的代码,但出现了以下异常:

java.lang.ClassCastException: javafx.scene.image.ImageView cannot be cast to javafx.scene.control.Button

最佳答案

您不能将ImageView强制转换为Button,因此会出现错误消息。

您可以做的是强制转换为ImageView

stage = (Stage) ((ImageView) event.getSource()).getScene().getWindow();


但是,由于在getScene类中声明了Node方法,并且ButtonImageView都是Node的子类,因此在两种情况下都可以转换为Node

stage = (Stage) ((Node) event.getSource()).getScene().getWindow();


但是最后为了避免代码重复,您可以将整个最小化逻辑提取到一个方法中:

private void minimizeStageOfNode(Node node) {
    ((Stage) (node).getScene().getWindow()).setIconified(true);
}


您可以在其他点击处理程序中调用此方法:

Button button = new Button("I am a button");
button.setOnAction(event -> minimizeStageOfNode((Node) event.getSource()));

ImageView imageView = new ImageView();
imageView.addEventHandler(MouseEvent.MOUSE_CLICKED, event ->
     minimizeStageOfNode((Node) event.getSource()));

关于java - JavaFX如何最小化ImageView上的窗口单击?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39609004/

10-11 23:03
查看更多