Java Swing / AWT中的Page Turn效果

时间:2011-10-07 12:55:08

标签: java swing animation graphics awt

我想在Swing / AWT中实现page turn effect。该理论得到了很好的解释here。我的问题是,由于页面是包含文本,这是正确的swing / awt组件使用?另外,为了更深入一点,我该如何解决这个问题呢?我的意思是我有摆在我面前的理论,我知道我需要使用的工具,但我从未用Swing / AWT做过这样的事情,我是否需要掌握Swing / AWT的所有细节才能做到此?

1 个答案:

答案 0 :(得分:1)

无论你做什么,你都必须实现自己的绘图程序。由于您打算绘制的文本不会分享用其他组件绘制的文本的大多数特征(它将成角度,随着时间的推移而旋转,并在页面移动的可见“边缘”处剪切),您还必须画文本。

在SWING和所有非控制台程序中,文本被绘制到屏幕上,就像任何图形基元一样。这需要一些学习;特别是行间距,字母间距,自动换行等细节

这意味着我会考虑一个新的swing UI组件。 Here's how to write custom painting for one。根据细节,您可能希望重用模型。通常,只比视图和模型更容易编写视图;但是,您必须平衡视图的需求与现有模型的适用性。

如果选择现有模型,则应该使用“文档”界面对视图进行编码。您可以从JTextPane或JTextArea视图组件中取得领导,如果您希望能够为文本“添加样式”,则可以使用。

不要忘记视图实际上不会在结构良好的Swing组件中进行绘制。如果确实如此,则无法进行蒙皮(遵循平台的主题)。这意味着虽然您将提供Swing视图(通常具有类似JPagedBook的名称模式),但该视图必须耦合到UIDelegate,该UIDelegate执行视图的实际绘制。这允许每个视图有多个UIDelegates,每个UIDelegate包含如何以与平台的外观一致的方式呈现(绘制)视图的指令。

围绕此问题的最大问题通常是正确支持外观所涉及的额外工作,以及缺乏正确的UIDelegate注册知识(因此当视图绘制时,它会找到可以绘制它的东西)。值得花费额外的几个小时(或者如果GUI组件编程对你来说是新的几天),使它像Swing的其余部分一样工作。最后,您将拥有一个不像图书馆“独立”部分的组件。