Как сделать мышь прозрачной для сцены в JavaFX 8? - PullRequest
6 голосов
/ 18 апреля 2019

Я знаю, как сделать мышь прозрачной Node.Но я хочу сделать прозрачное окно в цвете и событиях мыши, чтобы курсор мог пройти через это окно и щелкнуть приложение, которое под ним.

Вот минимальный код:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class MouseTransparentWindow extends Application {

    @Override
    public void start(Stage primaryStage) {

        StackPane stackPane = new StackPane();
        stackPane.setStyle("-fx-background-color: rgba(192,192,192,0.2);" +
                "-fx-border-width: 1px;-fx-border-color: #1d1d1d");
        stackPane.setMouseTransparent(true);

        Scene scene = new Scene(stackPane, 400, 250, Color.TRANSPARENT);
        scene.setFill(null);
        primaryStage.setScene(scene);
        primaryStage.initStyle(StageStyle.TRANSPARENT);
        primaryStage.show();
    }
}

Кажется, он работает в Windows, но мне нужно, чтобы мой код работал во всех операционных системах.

1 Ответ

0 голосов
/ 13 июля 2019

Я бы использовал вместо Scene.initStyle(StageStyle.TRANSPARENT); это Scene.initStyle(StageStyle.UNDECORATED), потому что теперь сцена не имеет ничего общего с ПРОЗРАЧНЫМ , но на самом деле она ничего не имеет.Когда вы устанавливаете его ПРОЗРАЧНО , это означает, что оно есть, но вы его не видите.К тому же у меня никогда не было проблем ни с одной ОС.

...