gpt4 book ai didi

java - Swing UI刷新: Background thread prints exception

转载 作者:行者123 更新时间:2023-12-01 11:39:49 28 4
gpt4 key购买 nike

我有 Jframe,在其中显示 JTree。由于我要添加大量节点,所以我创建了 4 个线程,不断向树添加节点。

使新添加的节点在 UI 上可见。我每 10 秒重新加载一次帧,

SwingUtilities.updateComponentTreeUI(frame);

我的框架已重新加载,新添加的节点现在可见。但是有后台线程在我的控制台上打印异常。虽然不妨碍我的UI输出。但我可以知道以下异常的原因以及如何消除该异常

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicScrollBarUI.layoutHScrollbar(BasicScrollBarUI.java:731)
at javax.swing.plaf.basic.BasicScrollBarUI.layoutContainer(BasicScrollBarUI.java:833)
at java.awt.Container.layout(Container.java:1421)




Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicScrollPaneUI.paint(BasicScrollPaneUI.java:90)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:752)
at javax.swing.JComponent.paint(JComponent.java:1029)



Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicScrollBarUI.layoutVScrollbar(BasicScrollBarUI.java:638)
at javax.swing.plaf.basic.BasicScrollBarUI.layoutContainer(BasicScrollBarUI.java:829)
at java.awt.Container.layout(Container.java:1421)
at java.awt.Container.doLayout(Container.java:1410)
at java.awt.Container.validateTree(Container.java:1507)
at java.awt.Container.validateTree(Container.java:1513)

此外,异常堆栈跟踪也发生了变化,如上所示。我无法弄清楚可能的原因是什么。我还同步了代码,以便在刷新框架时不会添加新节点。但这并没有帮助。

请告知我在这种情况下该怎么办。

谢谢

最佳答案

Swing 不是线程安全的。对 Swing UI 组件的所有修改都需要从事件调度线程执行。您应该删除已实现的四个线程并从主线程执行所有操作。

关于java - Swing UI刷新: Background thread prints exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29625413/

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