【问题标题】:How to remove JavaFX stage buttons (minimize, maximize, close)如何删除 JavaFX 舞台按钮(最小化、最大化、关闭)
【发布时间】:2012-01-10 14:17:43
【问题描述】:

如何删除 JavaFX 舞台按钮(最小化、最大化、关闭)?根据Stage 方法找不到任何东西,所以我应该在舞台上使用样式吗?这是实现对话框窗口的必要条件,如ErrorWarningInfo

【问题讨论】:

    标签: javafx-2


    【解决方案1】:

    你可以做到这一点,你在你的舞台对象上调用以下方法

    stage.initModality(Modality.APPLICATION_MODAL); // makes stage act as a modal
    stage.setMinWidth(250); // sets stage width
    stage.setMinHeight(250); // sets stage height
    stage.setResizable(false); // prevents resize and removes minimize and maximize buttons
    stage.showAndWait(); // blocks execution until the stage is closed
    

    【讨论】:

      【解决方案2】:

      如果您只想禁用最大化按钮,请使用:

      stage.resizableProperty().setValue(Boolean.FALSE);
      

      或者如果你想禁用最大化和最小化,除了近距离使用

      stage.initStyle(StageStyle.UTILITY);
      

      或者如果你想删除所有三个然后使用

      stage.initStyle(StageStyle.UNDECORATED);
      

      【讨论】:

        【解决方案3】:

        我在这里找到了这个答案 --> http://javafxportal.blogspot.ie/2012/03/to-remove-javafx-stage-buttons-minimize.html 我们可以做到:

        enter code here
         @Override
            public void start(Stage primaryStage) {
                primaryStage.initStyle(StageStyle.UNDECORATED);
        
                Group root = new Group();
                Scene scene = new Scene(root, 100, 100);
        
                primaryStage.setScene(scene);
                primaryStage.show();
            }
        

        【讨论】:

          【解决方案4】:

          我遇到了同样的问题,目前在 javafx 中似乎无法使用未装饰但可拖动/标题的窗口(为了美观)。最接近的方法是消费 close 事件。

          stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
                          @Override
                          public void handle(WindowEvent event) {
                              event.consume();
                          }
                      });
          

          如果你喜欢 lambdas

          stage.setOnCloseRequest(e->e.consume());
          

          【讨论】:

          • 这是消耗事件而不是移除关闭按钮!
          • “一个未装饰但可拖动/标题的窗口(为了美观)目前在 javafx 中是不可能的” 自从你写了这篇文章后,情况发生了变化吗?我现在正在制作一个 JavaFX 应用程序,我希望我可以像编辑场景一样编辑舞台本身。
          【解决方案5】:
          stage.initStyle(StageStyle.DECORATED);
          stage.setResizable(false);
          

          【讨论】:

            【解决方案6】:
            stage.initModality(Modality.APPLICATION_MODAL);
            stage.setResizable(false);
            

            【讨论】:

            • 请提供更多关于您提供的解决方案的信息,只是粘贴一些代码不太有用
            【解决方案7】:
            primaryStage.setResizable(false);
            

            【讨论】:

              【解决方案8】:
              primaryStage.initStyle(StageStyle.UTILITY);
              

              【讨论】:

              • +1:最小化和最大化按钮被移除。使用 event.consume() 添加 setOnClose() 处理程序以禁止关闭按钮(解决方法)。
              • 好建议@Aubin。然而正确的事件是setOnCloseRequestprimaryStage.setOnCloseRequest(new EventHandler() { @Override public void handle(final WindowEvent windowEvent) { windowEvent.consume(); } });
              • Java 8 风格:primaryStage.setOnCloseRequest((event) -> event.consume());
              【解决方案9】:

              你只需要设置一个舞台的风格。试试这个例子:

              package undecorated;
              
              import javafx.application.Application;
              import javafx.stage.StageStyle;
              import javafx.scene.Group;
              import javafx.scene.Scene;
              import javafx.stage.Stage;
              
              public class UndecoratedApp extends Application {
              
                  public static void main(String[] args) {
                      Application.launch(args);
                  }
              
                  @Override
                  public void start(Stage primaryStage) {
                      primaryStage.initStyle(StageStyle.UNDECORATED);
              
                      Group root = new Group();
                      Scene scene = new Scene(root, 100, 100);
              
                      primaryStage.setScene(scene);
                      primaryStage.show();
                  }
              }
              

              在学习JavaFX 2.0时these examples很有帮助。

              【讨论】:

              • primaryStage.initStyle(StageStyle.UNDECORATED); 创建一个没有标题的窗口。如何仅删除最小化/最大化/关闭按钮?
              • @Chechulin 如何仅删除最小化/最大化/关闭按钮?现在没有选择。我试图删除仅最小化登录。但失败了。
              猜你喜欢
              • 2015-05-21
              • 2013-10-10
              • 2015-05-02
              • 2011-02-27
              • 2011-02-09
              • 2016-03-04
              • 1970-01-01
              • 2014-11-25
              相关资源
              最近更新 更多