JavaFX primaryStage 删除窗口边框?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/9861178/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-16 12:23:54  来源:igfitidea点击:

JavaFX primaryStage remove windows borders?

javauser-interfacejakarta-eejavafxjavafx-2

提问by DHRUV BANSAL

I am making JavaFX destop application. I want to remove the default windows border and also I want to customize the 3 standard icons of minimize , maximize and close.

我正在制作 JavaFX 停止应用程序。我想删除默认的窗口边框,还想自定义最小化、最大化和关闭的 3 个标准图标。

The original motivation of this kind of looks or customization is new Kaspersky 2012 User Interface.... I want to design something like that... :)

这种外观或定制的最初动机是新的卡巴斯基 2012 用户界面......我想设计这样的东西...... :)

采纳答案by pmoule

This example might be a good starting point. All window decoration is removed. A class extending HBoxcan be used to place custom buttons for standard window operations.

这个例子可能是一个很好的起点。所有窗户装饰都被移除。扩展类HBox可用于为标准窗口操作放置自定义按钮。

package javafxdemo;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class JavaDemo extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    class WindowButtons extends HBox {

        public WindowButtons() {
            Button closeBtn = new Button("X");

            closeBtn.setOnAction(new EventHandler<ActionEvent>() {

                @Override
                public void handle(ActionEvent actionEvent) {
                    Platform.exit();
                }
            });

            this.getChildren().add(closeBtn);
        }
    }

    @Override
    public void start(Stage primaryStage) {
        //remove window decoration
        primaryStage.initStyle(StageStyle.UNDECORATED);

        BorderPane borderPane = new BorderPane();
        borderPane.setStyle("-fx-background-color: green;");

        ToolBar toolBar = new ToolBar();

        int height = 25;
        toolBar.setPrefHeight(height);
        toolBar.setMinHeight(height);
        toolBar.setMaxHeight(height);
        toolBar.getItems().add(new WindowButtons());

        borderPane.setTop(toolBar);

        primaryStage.setScene(new Scene(borderPane, 300, 250));
        primaryStage.show();
    }
}

You can also download the JavaFX Sampleswhere you can find many more useful examples.

您还可以下载JavaFX 示例,您可以在其中找到更多有用的示例。