在JavaFX2中最小化窗口

12

我已经取消了JavaFX2中窗口的装饰。现在我想通过操作来最小化窗口。这是我的代码:

    minIcon.setOnMouseClicked(new EventHandler<MouseEvent>() {
        public void handle(MouseEvent me) {
            primaryStage.toBack();
        }
    });

如果打开另一个窗口,当前窗口会返回。否则不会。请告诉我如何做到这一点?

3个回答

43

经过一段时间的搜索,我自己找到了答案。

minIcon.setOnMouseClicked(new EventHandler<MouseEvent>() {
    public void handle(MouseEvent me) {
        primaryStage.setIconified(true);
    }
});

这个运作良好。


我不理解这个解决方案...更多的上下文会更好。我正在使用CSS。我该如何实现这个最小化操作? - Airlike
6
对于你的答案,请输入÷1,对于最不直观的方法名称,向JavaFX开发人员输入-1。 - Mateus Viccari
但是如何获取primaryStage? - FearX

1
以下代码应该可以正常工作:

iconid.setOnMouseClicked( event -> {
  Stage obj = (Stage) iconid.getScene().getWindow();
  obj.setIconified(true);
});

编辑:我在这里是新手,所以我不知道如何更好地展示我的代码。所以我会尽力。

以下是说明:

变量含义-

iconid: 您的ImageView元素的fxid。 obj: 随机阶段对象,您可以声明它。

event -> {}是一个lambda函数,它减少了我的工作量,因此我经常使用它。

第二行所做的是创建一个新的阶段对象,并将其赋值为当前正在显示的阶段,该阶段是使用.getScene().getWindow()属性检索到的。出于一致性考虑,我使用了相同的ImageView元素,但您可以使用属于同一阶段的任何元素。(例如来自同一窗口的按钮)

第三行是您调用setIconified(boolean)方法的位置[不是最佳命名ik,但我认为它与将其“图标化”到任务栏有关--将其从窗口转换为图标]。将其设置为“true”会使指定的窗口最小化。

就是这样。


请不要仅仅发布代码作为答案,还要提供解释您的代码是如何解决问题的。带有解释的答案通常更有帮助和更高质量,并且更有可能吸引赞同。 - Tyler2P

0
关闭当前舞台的简单方法是:
@FXML
public void onMinimize(){
    ((Stage) mainPage.getScene().getWindow()).setIconified(true);
}

当按钮被按下时,将调用此方法。本答案的重点是代码块。

这是一个非常紧凑的解决方案。首先,我们从主页面获取窗口。然后将其转换为舞台。然后我们使用 .setIconified(true)。虽然没有动画,但它可以正常工作。 变量 mainPageAnchorPain。我认为它适用于任何类型的面板。我在类中定义了它:

@FXML
private AnchorPane mainPage;

确保正确拼写技术术语。顺便提一句,公共方法不需要FXML注解。 - kleopatra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接