2011-10-07 95 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組件編程對你來說是新的)是值得的。最後你會有一個組件,它不會像庫中的「獨立」部分。