java - Java/Swing 中的翻书

标签 java swing

你们都看过那些基于 Flash 的翻页书。我想用 Java 创建相同的东西。我正在使用 JTextArea 作为书页。我想知道的是如何通过重写 componentPaint 方法结合 Mouse/KeyListener 来实现翻页效果?

最佳答案

您需要将现有页面呈现到离屏缓冲区中,然后转换缓冲区以呈现页面翻转。

所以,

  • 创建一个屏幕大小的离屏图像缓冲区。
  • 获取缓冲区的图形上下文并使用该上下文调用 super.componentPaint
  • 您现在已将页面呈现为“扁平化”并放入屏幕外缓冲区
  • 根据您的屏幕上下文,
    • 清理该区域,
    • 复制缩放以显示翻转的屏幕外页面
    • 在顶部绘制一个 alpha 渐变以“阴影”页面,使其看起来像 3D

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

关于java - Java/Swing 中的翻书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660942/

相关文章:

java - web.xml 中针对没有角色成员资格的经过身份验证的用户的安全约束

java - 在 Azure AD B2C 注册页面上添加自定义电话号码字段

java - MigLayout - 使单元格随着窗口的增长而增长

java - 如何使用 BoxLayout 使组件适合父级宽度?

java - 如何在使用IBM websphere的ear应用程序中创建deployment.xml文件?

java - 我应该如何处理 Java Config @Bean 方法中的已检查和未检查异常以显示用户友好的错误原因?

java - JTextField 无法容纳输入字符

java - 如何实现滚动到底部时刷新的 JTable

java - Java Swing 定时器中的负延迟

Java 编译类中未调用的方法调用了缺失的方法