【问题标题】:Timer error java.lang.IllegalStateException计时器错误 java.lang.IllegalStateException
【发布时间】:2014-02-10 10:06:23
【问题描述】:

我试图显示一个标签,说明在 JRE 8 中所有内容仅在 3 秒内正确,因为我无法在 JRE 7 中使用 DatePicker,并且收到此错误。

    Exception in thread "Timer-2" java.lang.IllegalStateException: Not on FX application thread; currentThread = Timer-2
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(Unknown Source)
at javafx.scene.Scene.addToDirtyList(Unknown Source)
at javafx.scene.Node.addToSceneDirtyList(Unknown Source)
at javafx.scene.Node.impl_markDirty(Unknown Source)
at javafx.scene.Node$7.invalidated(Unknown Source)
at javafx.beans.property.BooleanPropertyBase.markInvalid(Unknown Source)
at javafx.beans.property.BooleanPropertyBase.set(Unknown Source)
at javafx.css.StyleableBooleanProperty.set(Unknown Source)
at javafx.scene.Node.setVisible(Unknown Source)
at Pantallas.PersonalContabilidad$1.run(PersonalContabilidad.java:221)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)

correct 是一个标签,我显示 3 秒,它在 correct.setVisible(false); 失败,这是第 221 行

    correct.setVisible(true);
    timer.schedule(new TimerTask() {
    @Override
        public void run() {
        correct.setVisible(false);
    }
    }, 3*1000);

【问题讨论】:

    标签: java multithreading exception timer


    【解决方案1】:

    正确的标签应该从 FX 应用程序线程更新。你应该在这里使用Platform.runLater()

    correct.setVisible(true);
    timer.schedule(new TimerTask() {
    @Override
        public void run() {
        Platform.runLater(new Runnable() {
           public void run() {
              correct.setVisible(false);
          }
        });
    }
    }, 3*1000);
    

    【讨论】:

      【解决方案2】:

      您收到此异常是因为您不是从 FX 应用程序线程调用 Java FX GUI 元素。您可以仅从 GUI 线程访问 GUI 元素。您可以使用runLater(Runnable) 来确保您的代码在正确的线程中执行。

      【讨论】:

        猜你喜欢
        • 2013-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-29
        • 1970-01-01
        相关资源
        最近更新 更多