我正在为我的学期项目制作游戏。当用户单击我的游戏菜单的选项按钮或单击积分按钮时,我想显示一个过渡。我想在一个面板替换另一个面板时显示过渡。可能吗我正在使用Java swing库。

最佳答案

您应该使用CardLayout在GUI中交换视图(JPanels)。要获得淡入淡出的效果不是最简单的事情,但是只需做一些工作即可完成。我已成功完成here,在其中创建了一个名为SwappingImgPanel的特殊类,该类扩展了JPanel,并使用Swing Timer将一个图像淡入另一个图像。具体来说,该程序执行以下操作:


该程序使用JPanel将所有交换组件添加到CardLayout中。
它还添加了一个SwappingImgPanel,一个创建以绘制两个图像的JPanel,一个正在淡出的组件,一个正在淡入的组件。
交换组件时,将创建两个组件的图像,一个当前可见,另一个下一个可见。
您将图像发送到SwappingImgPanel实例
您在SwappingImgPanel实例上调用swap()
SwappingImgPanel然后将绘制两个图像,但使用Swing Timer来更改Graphic对象的合成值。这就是导致图像部分可见的原因。
完成SwappingImgPanel的Timer后,将调用done()方法,该方法将SwappingImgPanel的State设置为State.DONE。
主GUI正在监听SwappingImgPanel的状态值,当它达到State.DONE时,主GUI将显示实际的下一个组件(而不是其图像)。

10-08 19:40