JavaFX 如何最小化 ImageView 点击窗口?

标签 java javafx onclick imageview

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

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()));

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

相关文章:

javascript - 如何在 for 循环中使用 .getElementsByClassName() 来隐藏 HTML 元素

java - 使用 CDI 机制替换基于工厂的对象创建

java - setText 函数不会改变 TextView

JavaFX 无法填充 TableView

JavaFX CSS 从窗口中删除蓝色边框

android - 单击项目时没有显示 toast RecyclerView

Java如何显示已读取的记录范围

java - Comparable 和 Comaprator 接口(interface)

java - 如何更改普通 Pane 的样式(不是布局 Pane )

javascript - 如何获得垂直列表以将 PDF 加载到 iFrame 中