Bei der Erstellung meiner eigenen Web-Browser-Anwendung in Java mit der JavaFX-Bibliothek habe ich festgestellt, dass WebView Cursor-Änderungen von anderen Klassen tendenziell überschreibt. Da ich einen UNDECORATED-Fenstertyp verwende, möchte ich eine benutzerdefinierte Größenänderungsklasse erstellen, um die Fenstergrößenanpassung zu simulieren. Dazu muss der Cursor auf den Typ "RESIZE" geändert werden. Dies funktioniert jedoch, da das WebView-Element keinen Rahmen hat und nicht geplant ist; Es überschreibt die Cursoränderung. Ich konnte kein Ereignis für die Cursoraktualisierung von WebView finden.JavaFX - überschreiben WebView Cursor ändern
Kurz gesagt: Wie kann ich den Cursor (überschreiben WebView) gewaltsam ändern.
Anmerkung: Ich habe versucht, den Cursor zu ändern zurück nach WebView modifiziert sie (ich fand keinen Weg, um die Änderung zu konsumieren), aber dies führte zu dem folgenden Fehler:
java.lang.StackOverflowError
at javafx.scene.Node$MiscProperties$6.invalidated(Node.java:6459)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:111)
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:145)
at javafx.css.StyleableObjectProperty.set(StyleableObjectProperty.java:82)
at javafx.scene.Node.setCursor(Node.java:1160)
at to.us.thedjcreeper.thelightweb.nodes.WebTab.lambda$new$1(WebTab.java:28)
at to.us.thedjcreeper.thelightweb.nodes.WebTab$$Lambda$98/1896727623.changed(Unknown Source)
at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81)
at javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(ObjectPropertyBase.java:105)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112)
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:145)
at javafx.css.StyleableObjectProperty.set(StyleableObjectProperty.java:82)
at javafx.scene.Node.setCursor(Node.java:1160)
Code:
webView.cursorProperty().addListener((observable, oldValue, newValue) -> {
if (ResizeHelper.resizing && oldValue != newValue) webView.setCursor(oldValue);
});
Haben Sie die Kontrolle über den HTML-Inhalt haben? – VGR
@VGR Ja, aber ich würde lieber vermeiden, den Inhalt der Datei zu ändern. – TheDJCreeper