我有一个未经修饰的FXML阶段。我创建了一个用于最小化窗口的按钮,并在initialize方法的Controller类中为其创建了一个事件。
minimizeBtn.setOnAction(e -> {
Stage stage = (Stage)((Button)e.getSource()).getScene().getWindow();
stage.setIconified(true);
System.out.println(stage.isIconified());
});
问题:
isIconified()
返回true
,而可视窗口没有任何变化。
如果我从UNDECORATED切换到默认值,则我的自定义按钮可以正常使用。
答案 0 :(得分:0)
在MacOS High Sierra和Mojave上,对于jdk 11.0.2和JavaFX 12.0.1而言,这对我来说都是同样的问题
有示例代码可以重现该问题。
请注意,如果不将UNDECORATED
样式设置为舞台,就不会发生问题。
在Windows上,无论舞台样式是什么,行为都是正确的。
public class DemoApplication extends Application {
@Override
public void start(Stage primaryStage) {
Button minimize = new Button("MINIMIZE");
minimize.setOnAction(event -> primaryStage.setIconified(true));
primaryStage.initStyle(StageStyle.UNDECORATED);
Scene scene = new Scene(new StackPane(minimize));
primaryStage.setTitle("JavaFX App");
primaryStage.setWidth(960);
primaryStage.setHeight(600);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}