Java 游戏 - ClassCastException

标签 java swing java-2d classcastexception jscrollbar

我正在开发一个简单的 Java 游戏,但我的滚动条出现异常。 滚动条应该是一个“gameslider”。

Exception in thread "Thread-3" java.lang.ClassCastException: sun.java2d.NullSurfaceData cannot be cast to sun.java2d.d3d.D3DSurfaceData at sun.java2d.d3d.D3DRenderer.copyArea(Unknown Source) at sun.java2d.d3d.D3DSurfaceData.copyArea(Unknown Source) at sun.java2d.SunGraphics2D.doCopyArea(Unknown Source) at sun.java2d.SunGraphics2D.copyArea(Unknown Source) at javax.swing.BufferStrategyPaintManager.copyArea(Unknown Source) at javax.swing.RepaintManager.copyArea(Unknown Source) at javax.swing.JViewport.blitDoubleBuffered(Unknown Source) at javax.swing.JViewport.windowBlitPaint(Unknown Source) at javax.swing.JViewport.setViewPosition(Unknown Source) at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.hsbStateChanged(Unknown Source) at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(Unknown Source) at javax.swing.DefaultBoundedRangeModel.fireStateChanged(Unknown Source) at javax.swing.DefaultBoundedRangeModel.setRangeProperties(Unknown Source) at javax.swing.DefaultBoundedRangeModel.setValue(Unknown Source) at javax.swing.JScrollBar.setValue(Unknown Source) at GameEnvironment.GamePanel.gameUpdate(GamePanel.java:171) at GameEnvironment.GamePanel.run(GamePanel.java:73) at java.lang.Thread.run(Unknown Source)

代码行如下:

        if (reachedMiddle)
        scrollPane.getHorizontalScrollBar().setValue(player.getX() - (widthHorizontalScrollBar / 2));

异常将或多或少地随机引发。到目前为止我还没弄明白。

最佳答案

我会确保此代码在 GUI 事件线程上运行。如果您在其他线程上调用 Swing 组件,您可能会遇到奇怪的随机错误。

看看使用 SwingUtilities.invokeLater(Runnable)执行更新 Swing 组件的任务。

关于Java 游戏 - ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10177943/

相关文章:

java - Spring SpEL 有限制吗?

java - .NET JPA 规范

java - JTextField 中的下拉列表

java - 间隔条渲染器 : Displaying specific information inside the bar

java - 以编程方式放大 JFrame/JPanel

java - 进度监视器(不确定)显示后端执行情况

java - 所有 Activity 中都可用的选项菜单

java - 在java swing中运行的脚本需要等待线程完成

java - 如何使用drawString更改字符串中单个字符的颜色?

Java2D : Increase the line width