Java游戏-ClassCastException [英] Java Game - ClassCastException

查看:111
本文介绍了Java游戏-ClassCastException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个简单的Java游戏,而我的滚动条引发了一个异常. 滚动条应该是游戏滑块".

I am developing a simple java game and my scrollbar is raising an exception. The scrollbar is supposed to be a "gameslider".

线程"Thread-3"中的异常java.lang.ClassCastException:sun.java2d.NullSurfaceData无法转换为sun.java2d.d3d.D3DSurfaceData 在sun.java2d.d3d.D3DRenderer.copyArea(未知源) 在sun.java2d.d3d.D3DSurfaceData.copyArea(未知来源) 在sun.java2d.SunGraphics2D.doCopyArea(未知来源) 在sun.java2d.SunGraphics2D.copyArea(未知来源) 在javax.swing.BufferStrategyPaintManager.copyArea(未知来源) 在javax.swing.RepaintManager.copyArea(未知源) 在javax.swing.JViewport.blitDoubleBuffered(未知来源) 在javax.swing.JViewport.windowBlitPaint(未知来源) 在javax.swing.JViewport.setViewPosition(未知源) 在javax.swing.plaf.basic.BasicScrollPaneUI $ Handler.hsbStateChanged(未知源) 在javax.swing.plaf.basic.BasicScrollPaneUI $ Handler.stateChanged(未知源) 在javax.swing.DefaultBoundedRangeModel.fireStateChanged(未知来源) 在javax.swing.DefaultBoundedRangeModel.setRangeProperties(未知源) 在javax.swing.DefaultBoundedRangeModel.setValue(未知来源) 在javax.swing.JScrollBar.setValue(未知来源) 在GameEnvironment.GamePanel.gameUpdate(GamePanel.java:171) 在GameEnvironment.GamePanel.run(GamePanel.java:73) 在java.lang.Thread.run(未知来源)

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));

该异常将或多或少地随机引发.到目前为止,我还没有弄清楚.

The exception will be raised more or less randomly. I didnt figured it out so far.

推荐答案

我将确保此代码在GUI事件线程上运行.如果在其他线程上调用Swing组件,则会出现奇怪的randonm错误.

I would make sure this code is run on the GUI Event Thread. If you call the Swing components on other threads you can get strange, randonm errors.

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

Have a look at using SwingUtilities.invokeLater(Runnable) to perform the tasks where the Swing components are updated.

这篇关于Java游戏-ClassCastException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆