我已经取消了JavaFX2中窗口的装饰。现在我想通过操作来最小化窗口。这是我的代码:
minIcon.setOnMouseClicked(new EventHandler<MouseEvent>() {
public void handle(MouseEvent me) {
primaryStage.toBack();
}
});
如果打开另一个窗口,当前窗口会返回。否则不会。请告诉我如何做到这一点?
经过一段时间的搜索,我自己找到了答案。
minIcon.setOnMouseClicked(new EventHandler<MouseEvent>() {
public void handle(MouseEvent me) {
primaryStage.setIconified(true);
}
});
这个运作良好。
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”会使指定的窗口最小化。
就是这样。
@FXML
public void onMinimize(){
((Stage) mainPage.getScene().getWindow()).setIconified(true);
}
当按钮被按下时,将调用此方法。本答案的重点是代码块。
这是一个非常紧凑的解决方案。首先,我们从主页面获取窗口。然后将其转换为舞台。然后我们使用 .setIconified(true)
。虽然没有动画,但它可以正常工作。
变量 mainPage
是 AnchorPain。我认为它适用于任何类型的面板。我在类中定义了它:
@FXML
private AnchorPane mainPage;