/カーソルのJavaFXシーンに変換するAWT /カーソル?

ウィリアム・F:

私のアプリケーションは、SwingおよびJavaFXのを兼ね備えています。私は、同じカーソルを使用するすべてのコンポーネントをしたいと思います。

AWTカーソルからJavaFXのカーソルを作成するための最良の方法は何ですか?

EDIT:と呼ばれるユーティリティパッケージがありjavafx.embed.swing.SwingCursors、残念ながらそれはパブリックではありません。しかし、多分私はそれからコードを盗むことができます。

VGR:

SwingとJavaFXの混合についてトリッキーなことは、ある特定のスレッドで実行するために、彼らはそれぞれの必要性ということです。それ以外は、それぞれのツールキットのためにカーソルを作ることは非常に簡単です。

標準のカーソルを取得します:

private java.awt.Cursor awtCursor;
private javafx.scene.Cursor fxCursor;

// ...

    EventQueue.invokeLater(() -> {
        awtCursor = java.awt.Cursor.getPredefinedCursor(
            java.awt.Cursor.CROSSHAIR_CURSOR);
    });

    Platform.runLater(() -> {
        fxCursor = javafx.scene.Cursor.CROSSHAIR;
    });

それは間の類似体を見つけるのは簡単です標準AWTカーソル()のリスト、標準のJavaFXカーソルのリスト

画像URLからカスタムカーソルを作ります:

private java.awt.Cursor awtCursor;
private javafx.scene.Cursor fxCursor;

// ...

    URL cursorURL = MyApplication.class.getResource("specialcursor.png");

    EventQueue.invokeLater(() -> {
        java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
        awtCursor = toolkit.createCustomCursor(
            toolkit.getImage(cursorURL),
            new java.awt.Point(12, 12),
            "specialcursor");
    });

    Platform.runLater(() -> {
        fxCursor = new ImageCursor(
            new javafx.scene.image.Image(cursorURL.toString()), 12, 12);

    });

既存のイメージのために、それはかなり似ていますが、あなたは、スレッドの制約を気にする必要があります。

既存のAWTイメージからカスタムカーソルを作ります:

private java.awt.Cursor awtCursor;
private javafx.scene.Cursor fxCursor;

// ...

    EventQueue.invokeLater(() -> {

        java.awt.Image image = /* ... */;

        awtCursor = toolkit.createCustomCursor(
            image,
            new java.awt.Point(12, 12),
            "specialcursor");

        Platform.runLater(() -> {
            fxCursor = new ImageCursor(
                javafx.embed.swing.SwingFXUtils.toFXImage(image, null),
                12, 12);

        });
    });

既存のJavaFX画像からカスタムカーソルを作ります:

private java.awt.Cursor awtCursor;
private javafx.scene.Cursor fxCursor;

// ...
    Platform.runLater(() -> {
        javafx.scene.image.Image image = /* ... */;

        fxCursor = new ImageCursor(image, 12, 12);

        EventQueue.invokeLater(() -> {

            awtCursor = toolkit.createCustomCursor(
                javafx.embed.swing.SwingFXUtils.fromFXImage(image, null),
                new java.awt.Point(12, 12),
                "specialcursor");
        });
    });

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=408455&siteId=1