web-dev-qa-db-ja.com

JavaFX primaryStageはウィンドウの境界を削除しますか?

JavaFX destopアプリケーションを作成しています。デフォルトのウィンドウの境界線を削除し、最小化、最大化、閉じるの3つの標準アイコンをカスタマイズします。

この種類の外観やカスタマイズの元々の動機は、新しいKaspersky 2012ユーザーインターフェイスです。

22
DHRUV BANSAL

この例は良い出発点かもしれません。すべてのウィンドウ装飾が削除されます。 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();
    }
}

JavaFX Samples をダウンロードして、さらに多くの有用な例を見つけることもできます。

37
pmoule