2012-09-29 83 views
0

這更像是一個合乎邏輯的問題/解析。類似頁面管理的MS Word

我有一個類似於MS Wrod的文本編輯程序。它的文檔是由頁面組成的。

一個頁面是保存頁面內容的JPanel(A)。添加JPanel(A)頁面內容,這是其他JPanel(B)。頁面的最後一個元素始終是填充所有未佔用空間的填充程序。

我所要做的就是管理JPanel(B)遷移。當頁面被填充時,最後一個應該移動到下一個頁面上,當頁面上的空間被釋放時,我必須檢查下一個頁面的第一個元素是否適合該空間並將其向上移動。

我嘗試使用連接到Filler的組件偵聽器來實現該功能。 如果填充物高度達到零,則頁面已滿,如果填充物放大,則會從頁面中刪除(或降低其高度)元素。

看起來相當簡單,但也有一些問題。 JPanels(B)不是全部相同的大小。

這意味着,當一個JPanel(B)從頁面中刪除時,多於一個JPanel(B)從 下一頁可能適合該空間。這也意味着如果頁面的第一個JPanel(B)的高度降低了,它也可能適合上一頁(如果它的新高度小於預設頁面的填充頁上的高度),並且如果下降足夠大,可以在當前附加更多來自下一頁的JPanel(B)。

考慮到所有這些因素,可以基於此編寫相當數量的代碼。但是這一切都非常笨拙,因爲它都是在一個組件監聽器中完成的。

移動JPanels(B)將觸發前一頁/下一頁的組件監聽器。我可以通過在偵聽器代碼正在執行時將布爾值設置爲true來避免這種情況,並且只有在布爾值爲false時纔會運行偵聽器,但是它根本不會調用其他頁面偵聽器,這又不好,它們必須是最後調用。

我還想在這裏添加一個子問題:如果我從另一個偵聽器調用偵聽器,它會運行immediatley還是偵聽器完成後?如果答案是在後面,如果我多次調用它,它會只運行一次還是多次?如果一個偵聽器是從自己調用的呢?

我的主要問題是,有沒有一種方法可以在Java中以更簡單的方式實現這種類似Word的頁面內容管理?以某種方式創建一組組件,它們以自動管理所有這些的方式進行排列(在JTextArea中對文字進行自動換行的東西)?

我只是一個Java和Swing的初學者,所以也許有一些組件可以用於這個,或者可能當幾個正確組合在一起就像這樣? 也許有些佈局管理?

如果我創建了一些高級JPanel,我可以根據頁碼增加/減少它的高度,也許我可以添加一些垂直條作爲分隔符,如果在它之前添加了一個組件,如果它的高度是更大的空間留給分隔符,它會自動放在它後面?這樣我就可以創建頁面的幻覺。

這些只是一些想法,我希望他們中的一些是可能的,或者有人有更好的解決辦法...

+1

http://java-sl.com/articles.html這裏閱讀關於分頁的4篇文章 – StanislavL

+0

@StanislavL你先生,已經成就了我的一天。再次寫這個答案,以便我可以接受它... – Karlovsky120

回答

5

這就是答案 java-sl.com/articles。html在這裏閱讀4條關於分頁的文章

+0

java-sl.com/articles.html不再工作 –

+0

@sanjayduttindia我剛剛檢查過。它被打開了。 – StanislavL