2011-10-07 92 views
1

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

+3

接受一些答案;) –

+1

这个堆栈溢出问题和解答很多解释过程:http://stackoverflow.com/questions/5660942/flip-book-in-java-swing –

回答

1

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

在SWING中,在所有非控制台程序中,文本都会像任何图形基元一样绘制到屏幕上。它需要一点学习;特别是在行间距,字母间距,文字换行等细节方面。

这意味着我会考虑一个新的swing UI组件。 Here's how to write custom painting for one。根据具体情况,您可能需要重新使用模型。一般来说,只写一个视图比视图和模型同时更容易;但是,您必须平衡观点的需求与现有模型的适用性。

如果您选择现有的模型,那么文档界面就是您应该针对您的视图编码的内容。您可以从JTextPane或JTextArea视图组件中领先,具体取决于您是否希望将“添加样式”添加到文本中。

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

最大的问题是通常需要额外的工作来正确支持外观和缺乏对正确UIDelegate注册的知识(所以当视图绘制时,它会找到可以绘制它的东西)。为了使它像Swing的其他部分一样工作,额外的几个小时(或几天,如果GUI组件编程对你来说是新的)是值得的。最后你会有一个组件,它不会像库中的“独立”部分。