翻阅Java / Swing中的书

时间:2011-04-14 09:15:15

标签: java swing

你是gyus看过那些基于flash的翻书。我想在Java中创建相同的东西。我正在使用JTextArea作为本书的叶子。我想知道的是如何通过覆盖与Mouse / KeyListener结合的componentPaint方法来实现页面翻转效果呢?

2 个答案:

答案 0 :(得分:8)

您需要将现有页面渲染到屏幕外缓冲区,然后转换缓冲区以呈现页面翻转。

所以,

  • 创建一个屏幕大小的屏幕外图像缓冲区。
  • 获取缓冲区的图形上下文,并使用该上下文调用super.componentPaint
  • 您现在已将页面“平放”到您的屏幕外缓冲区
  • 借助屏幕上下文,
    • 清除区域,
    • 复制缩小的屏幕外页面以显示翻转
    • 在顶部绘制一个alpha渐变,以“遮挡”页面,使其看起来像3D

你需要在一个线程中驱动它,以便在动画播放时重复调用重绘。因此,设置一个“pageIsTurning”标志和“percentageTurned”,它将向paint方法指示它需要执行特殊绘制以及它在动画中的位置。在重复调用paint方法时更新percentageTurned标志,然后一旦完成,重置标志并允许componentPaint方法默认为super.componentPaint。

答案 1 :(得分:1)

不要重新发明轮子,请尝试这个自定义JComponent的真棒源代码,它完全符合您的要求:

http://lmireport.googlecode.com/svn/trunk/ireport/src/be/savat/components/JBookPanel.java

享受。 :)