16

最小化および最大化ボタンが無効になるアプリケーションを作成する必要があります。

"StageStyle.UNDECORATED"アプリケーションを移動またはドラッグできなくなったものを使用したので、アプリケーションを作成するための他の代替手段を探しています。

これに対する解決策を持っている人はいますか?

4

2 に答える 2

29

ウィンドウを装飾せずに移動/ドラッグ可能にするにMouseEventは、選択した任意のノードで適切なウィンドウを処理する必要があります。

例:

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class SimpleWindowApplication extends Application {
    private double xOffset = 0;
    private double yOffset = 0;

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

    @Override
    public void start(final Stage primaryStage) {
        primaryStage.initStyle(StageStyle.UNDECORATED);
        BorderPane root = new BorderPane();

        root.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                xOffset = event.getSceneX();
                yOffset = event.getSceneY();
            }
        });
        root.setOnMouseDragged(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                primaryStage.setX(event.getScreenX() - xOffset);
                primaryStage.setY(event.getScreenY() - yOffset);
            }
        });

        Scene scene = new Scene(root, 800, 600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

OracleのJavaFXダウンロードページに含まれている非常に価値のある例から詳細をご覧ください:JavaFXデモとサンプル

于 2012-11-19T19:29:34.037 に答える