如何在Java GUI中添加Transitions(Fade,dissolve等)

时间:2014-05-17 17:55:58

标签: java swing menu

我正在尝试为我的学期项目制作游戏。我希望在用户点击我的游戏菜单的选项按钮或用户点击信用按钮时显示转换。我希望在一个面板替换另一个面板时显示转换。它甚至可能吗?我正在使用java swing库。

1 个答案:

答案 0 :(得分:3)

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

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