当前位置: 首页 > 知识库问答 >
问题:

stage.setIconify(true)不适用于未装饰的舞台

白侯林
2023-03-14

我有一个未装饰的FXML舞台。我创建了一个按钮来最小化窗口,并在初始化方法的控制器类中为其创建了一个事件。

minimizeBtn.setOnAction(e -> {


            Stage stage = (Stage)((Button)e.getSource()).getScene().getWindow();
            stage.setIconified(true);
            System.out.println(stage.isIconified());
        });

问题:

isIcontify()返回true,而窗口在视觉上没有任何变化。

如果我从UNDECORATED切换到默认,我的自定义按钮完全有效。

共有1个答案

张华池
2023-03-14

我在MacOS High Sierra和Mojave上都遇到了同样的问题,jdk 11.0.2和JavaFX 12.0.1有一个示例代码来重现这个问题<请注意,如果不将未装饰的样式设置为阶段,则不会出现问题<在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);
  }

}
 类似资料:
  • 我对may e(fx)clipse应用程序有问题。我想在应用程序启动时显示一个启动屏幕。我成功地创建了实现StartupProgressTrackerService的类,并调用了我的stateReach方法。然而,我对javafx本身有问题。我想用StageStyle创建Stage。未装饰。然而,当我调用stage时。show()方法阶段不会立即渲染,并在创建主窗口后立即显示。它可以很好地工作,例

  • 我创建了一个小库,其中包含一个自定义窗口/阶段,用于使我的所有应用程序具有恒定和统一的外观。基本上,这只是一个没有装饰的舞台,有一个锚具,包含定制的最小化/最大化/关闭和调整大小控件。 唯一的问题是按下最小化按钮时执行的方法。在我的主系统(ArchLinux)上运行应用程序时不会发生任何事情,看起来应用程序被冻结了,这里有一个可视化示例:在Imgur上上传的示例图像,还没有足够的代表来发布图像 最

  • 这是我使用JavaFX的第二天,如果这似乎是一个太常见的知识问题的话。提前谢谢大家。 ..

  • 我对Docker比较陌生,我正在尝试使用Docker compose从我的Dockerfile构建一个自定义图像。 文档文件 docker-compose.yml 我的问题 运行docker compose build没有错误。当我执行docker run-it时 docker inspect(docker inspect)也显示卷没有装载(我公开的端口也没有映射到本地端口!)我错过了什么? 谢谢

  • 本文向大家介绍基于Python 装饰器装饰类中的方法实例,包括了基于Python 装饰器装饰类中的方法实例的使用技巧和注意事项,需要的朋友参考一下 title: Python 装饰器装饰类中的方法 comments: true date: 2017-04-17 20:44:31 tags: ['Python', 'Decorate'] category: ['Python'] --- 目前在中文网