JavaFX如何最小化ImageView上的窗口?

时间:2016-09-21 06:32:06

标签: java javafx onclick imageview

我尝试在ImageView单击和按钮单击上最小化窗口。它适用于按钮,但不适用于ImageView。这里是Button的代码

%rcx

如何使用ImageView进行操作?

尝试了与按钮相同的代码,但是这个例外来了:

Stage stage = null;

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

1 个答案:

答案 0 :(得分:2)

您无法将ImageView转换为Button,因此会出现错误消息。

你可以做的是转而转向ImageView

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

但是,由于在Node类中声明了getScene方法,并且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()));