gpt4 book ai didi

java - 使用 JavaFX 时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 14:12:06 25 4
gpt4 key购买 nike

我遇到了 NullPointerException,但我无法弄清楚它发生的位置或原因。我在一个项目中使用 JavaFX,它包含一个 .fxml 文件,其中有很多组件(主要是 SVGPaths、Circle 对象和 Text 对象)。它们被导入到 Controller 类中。每个 SVGPath 都有一个鼠标监听器(用于单击、输入和退出操作),有时我会收到一个 NullPointerException,这让我抓狂,因为我花了几个小时试图解决它。这是异常的确切堆栈跟踪。

java.lang.NullPointerException
at com.sun.javafx.sg.prism.NGTextHelper.computeBoundsLogical(Unknown Source)
at com.sun.javafx.sg.prism.NGTextHelper.computeContentBounds(Unknown Source)
at javafx.scene.text.Text.impl_computeGeomBounds(Unknown Source)
at javafx.scene.Node.updateGeomBounds(Unknown Source)
at javafx.scene.Node.getGeomBounds(Unknown Source)
at javafx.scene.Node.getLocalBounds(Unknown Source)
at javafx.scene.Node$MiscProperties$2.computeBounds(Unknown Source)
at javafx.scene.Node$LazyBoundsProperty.get(Unknown Source)
at javafx.scene.Node$LazyBoundsProperty.get(Unknown Source)
at javafx.scene.Node.getBoundsInLocal(Unknown Source)
at com.sun.javafx.scene.control.skin.TextAreaSkin$ContentView.layoutChildren(Unknown Source)
at javafx.scene.Parent.layout(Unknown Source)
at javafx.scene.Parent.layout(Unknown Source)
at javafx.scene.Parent.layout(Unknown Source)
at javafx.scene.Scene.layoutDirtyRoots(Unknown Source)
at javafx.scene.Scene.doLayoutPass(Unknown Source)
at javafx.scene.Scene.access$3900(Unknown Source)
at javafx.scene.Scene$ScenePulseListener.pulse(Unknown Source)
at com.sun.javafx.tk.Toolkit.firePulse(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit$9.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:722)

如果有人可以提供帮助并解释发生这种情况的原因,我将非常感激。

最佳答案

可能您已经解决了这个问题,但也许我的解决方案会帮助其他人。

如果您在 Swing 应用程序中使用 JavaFX,则必须小心,仅在相应的线程中执行 JavaFX 代码,并且仅在 EDT 中运行 Swing 代码。

我在我的应用程序中遇到了类似的问题,这是由于在 EDT 中执行 JavaFX 代码造成的。因此,为了纠正这个问题,我检查了代码,以确保在可能从 EDT 调用的方法上使用 Platform.runLater(...)。

Platform.runLater(new Runnable() {
@Override
public void run() {
// JavaFX manipulation code.
}
}

这看起来很简单,但有时很难记住。因此,可以肯定的是,请检查您的 JavaFX 代码,搜索可以由 Swing 组件和事件调用的公共(public)方法和接口(interface)。

关于java - 使用 JavaFX 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18434540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com