38

如何删除 JavaFX 舞台按钮(最小化、最大化、关闭)?找不到任何相应Stage的方法,所以我应该在舞台上使用样式吗?实现对话框窗口(如Error, Warning, Info.

4

9 回答 9

74

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

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

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

stage.initStyle(StageStyle.UTILITY);

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

stage.initStyle(StageStyle.UNDECORATED);
于 2014-06-07T06:16:35.573 回答
25

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

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 时,这些示例非常有用。

于 2011-12-01T14:34:26.543 回答
11
primaryStage.setResizable(false);
于 2013-12-02T16:41:04.620 回答
10
primaryStage.initStyle(StageStyle.UTILITY);
于 2013-09-16T20:04:59.300 回答
7

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

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

如果你喜欢 lambda

stage.setOnCloseRequest(e->e.consume());
于 2016-07-16T03:44:34.233 回答
4
stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false);
于 2016-01-25T15:09:24.207 回答
1

我在这里找到了这个答案——> 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();
    }
于 2017-10-23T14:33:49.580 回答
0

您可以实现这一点,您在舞台对象上调用以下方法

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
于 2019-03-17T18:08:58.593 回答
0
stage.initStyle(StageStyle.DECORATED);
stage.setResizable(false);
于 2017-04-20T13:35:14.033 回答