Este ejemplo podría ser un buen punto de partida. Toda la decoración de la ventana se elimina. Una clase que se extiende HBox
se puede utilizar para colocar botones personalizados para operaciones de ventana estándar.
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();
}
}
También puede descargar el JavaFX Samples, donde puedes encontrar muchos más ejemplos útiles.
Qué ilógico es marcar una pregunta como duplicada cuando en realidad era la pregunta original. – Haggra
Si diseña su propia ventana, sea muy conservador y trate de apegarse al diseño de cada plataforma nativa. Es increíblemente fácil arruinarlo y hacer que se vea como un truco barato. – RecursiveExceptionException