【问题标题】:JavaFX primaryStage remove windows borders? [duplicate]JavaFX primaryStage 删除 windows 边框? [复制]
【发布时间】:2012-04-09 07:26:56
【问题描述】:

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

这种外观或定制的最初动机是新的 Kaspersky 2012 用户界面......我想设计类似的东西...... :)

【问题讨论】:

  • 当一个问题实际上是原始问题时,将它标记为重复是多么不合逻辑。
  • 如果您确实设计了自己的窗口,请非常保守,并尽量坚持每个原生平台的设计。把它搞砸并让它看起来像一个廉价的噱头是非常容易的。

标签: java user-interface jakarta-ee javafx javafx-2


【解决方案1】:

这个例子可能是一个很好的起点。所有窗户装饰都被移除。扩展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,在那里您可以找到更多有用的示例。

【讨论】:

  • 感谢上面的例子..
  • 很好的答案。 +1!但是,如果希望仍然能够在屏幕上移动窗口怎么办?
  • 没关系,我在这里找到了答案:stackoverflow.com/questions/11780115/…
  • 注意:不适用于 JavaFX8 和 Eclipse 4.5
  • 链接失效了,请更新
猜你喜欢
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
  • 2015-09-09
  • 2016-04-09
  • 2017-10-12
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
相关资源
最近更新 更多