【发布时间】:2023-03-05 16:16:01
【问题描述】:
在使用 JavaFX 库在 Java 中创建自己的 Web 浏览器应用程序的过程中,我发现 WebView 倾向于覆盖其他类所做的光标更改。由于我使用的是 UNDECORATED 窗口类型,我的计划是创建一个自定义大小调整类来模拟窗口大小调整功能;这涉及将光标更改为“调整大小”类型。这确实有效,但是因为 WebView 元素没有边框并且不打算这样做;它会覆盖光标更改。我找不到 WebView 的光标更新的事件。
简而言之:如何强制更改光标(覆盖 WebView)。
注意:我试图在 WebView 修改后将光标改回来(我发现无法使用更改)但这导致了以下错误:
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)
代码:
webView.cursorProperty().addListener((observable, oldValue, newValue) -> {
if (ResizeHelper.resizing && oldValue != newValue) webView.setCursor(oldValue);
});
【问题讨论】:
-
您是否可以控制 HTML 内容?
-
@VGR 是的,但是我宁愿避免修改文件的内容。
标签: java javafx webview cursor overriding