Как удалить кнопки этапа JavaFX (свернуть, развернуть, закрыть) - PullRequest
35 голосов
/ 01 декабря 2011

Как убрать кнопки сцены JavaFX (свернуть, развернуть, закрыть)?Не могу найти ни одного соответствующего Stage метода, поэтому я должен использовать стиль для сцены?Это необходимо для реализации диалоговых окон типа Error, Warning, Info.

Ответы [ 9 ]

60 голосов
/ 07 июня 2014

Если вы хотите отключить только кнопку максимизации, используйте:

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

или если вы хотите отключить максимизацию и минимизацию, кроме случаев близкого использования

stage.initStyle(StageStyle.UTILITY);

или если вы хотите удалить все три, используйте

stage.initStyle(StageStyle.UNDECORATED);
21 голосов
/ 01 декабря 2011

Вам просто нужно установить стиль сцены. Попробуйте этот пример:

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 эти примеры очень полезны.

10 голосов
/ 02 декабря 2013
primaryStage.setResizable(false);
8 голосов
/ 17 сентября 2013
primaryStage.initStyle(StageStyle.UTILITY);
5 голосов
/ 16 июля 2016

У меня та же проблема, кажется, что она не украшена, но перетаскиваемое / озаглавленное окно (для эстетики) в javafx невозможно в данный момент.Самый близкий подход - использовать событие close.

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

Если вам нравятся лямбды

stage.setOnCloseRequest(e->e.consume());
2 голосов
/ 25 января 2016
stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false);
1 голос
/ 23 октября 2017

Я нашел этот ответ здесь -> 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();
    }
0 голосов
/ 17 марта 2019

Вы можете добиться этого, вызывая следующие методы для вашего объекта сцены

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
0 голосов
/ 20 апреля 2017
stage.initStyle(StageStyle.DECORATED);
stage.setResizable(false);
...