Javafx 2 如何删除JavaFX阶段按钮(最小化、最大化、关闭)

Javafx 2 如何删除JavaFX阶段按钮(最小化、最大化、关闭),javafx-2,Javafx 2,如何删除JavaFX阶段按钮(最小化、最大化、关闭)?找不到任何相应的Stage方法,所以我应该为Stage使用样式吗?实现诸如错误,警告,信息,之类的对话框窗口是必要的,您只需设置阶段的样式。试试这个例子: package undecorated; import javafx.application.Application; import javafx.stage.StageStyle; import javafx.scene.Group; import javafx.scene.Scene

如何删除JavaFX阶段按钮(最小化、最大化、关闭)?找不到任何相应的
Stage
方法,所以我应该为Stage使用样式吗?实现诸如
错误
警告
信息
之类的对话框窗口是必要的,您只需设置阶段的样式。试试这个例子:

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时非常有用。

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

primaryStage.initStyle(StageStyle.UTILITY);
stage.resizableProperty().setValue(Boolean.FALSE);
或者如果你想禁用最大化和最小化,除了关闭使用

stage.initStyle(StageStyle.UTILITY);
或者,如果要删除所有三个,请使用

stage.initStyle(StageStyle.UNDECORATED);

我也有同样的问题,看起来在javafx中现在不可能有一个未装饰但可拖动/有标题的窗口(为了美观)。最接近的方法是使用关闭事件

stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
                @Override
                public void handle(WindowEvent event) {
                    event.consume();
                }
            });
我在这里找到了这个答案--> 我们可以做到:

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();
    }

要实现这一点,可以在stage对象上调用以下方法

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

primaryStage.initStyle(StageStyle.UNDECORATED)生成一个没有标题的窗口。如何仅删除最小化/最大化/关闭按钮?@Chechulin如何仅删除最小化/最大化/关闭按钮?现在对此没有选择。我试图删除只用于登录的最小化。但失败。+1:删除最小化和最大化按钮。添加带有event.consume()的setOnClose()处理程序,以禁止关闭按钮(解决方法)。很好的建议@Aubin。但是,正确的事件是
setOnCloseRequest
primaryStage.setOnCloseRequest(新事件处理程序(){@Override public void handle(final WindowEvent WindowEvent){WindowEvent.consume();});Java8风格:primaryStage.setOnCloseRequest((事件)->event.consume());请提供更多关于您提供的解决方案的信息。粘贴一些代码没有多大帮助。它正在消耗事件,而不是删除关闭按钮!“目前在javafx中不可能有一个未装饰但可拖动/有标题的窗口(为了美观起见)”,这在您写这篇文章后发生了变化吗?我现在正在制作一个JavaFX应用程序,我希望我可以像编辑场景一样编辑舞台本身。
stage.setOnCloseRequest(e->e.consume());
stage.initStyle(StageStyle.DECORATED);
stage.setResizable(false);
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();
    }
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