У меня проблемы с изменением курсора с помощью WebView. Каждый раз, когда я перемещаю мышь, курсор мерцает, и иногда курсор по умолчанию отображается в верхней части моего пользовательского курсора в течение доли секунды.
Я нахожусь на JavaFX 10. Вот пример проблемы:
package com.company;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) { launch(args); }
public void start(Stage primaryStage) {
// Setup the WebView
WebView webView = new WebView();
String cursorUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Pixel_51_icon_cursor_click_top_right.svg/36px-Pixel_51_icon_cursor_click_top_right.svg.png";
String content = String.format("<body style=\"background-color: coral;cursor: url('%s') 10 10, auto\";>", cursorUrl);
content = content + "<br>some text<br> a link: <a href='www.google.com'>google</a></body>";
webView.getEngine().loadContent(content);
// Prints each time the cursor changes
webView.cursorProperty().addListener((observable, oldCursor, newCursor) -> {
if(newCursor == null || oldCursor == null) return;
System.out.println("Setting " + oldCursor + " to " + newCursor);
});
VBox vBox = new VBox(webView);
Scene scene = new Scene(vBox, 960, 600);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Я провел несколько тестов, и функция protected javafx.scene.Cursor getCustomCursor(WCImage image, int hotspotX, int hotspotY)
в CursorManagerImpl
почему-то постоянно вызывается.
Обратите внимание, что эта ошибка не возникает с предустановленными курсорами.