2013-04-05 154 views
0

我有一個GUI安裝,看起來像這樣:GUI構建麻煩

example

它顯示的文件,使用戶通過添加/刪除在他們JTextAreas和文本進行編輯。

嘗試打開文檔時出現問題。文檔本身是由JPanels層疊在一起組成的。在GUI中的單個點上不會有多於6層的JPanels

因爲我不知道JTextArea的高度是多少,所以我必須使它相對於父項(換句話說,不指定它)。

因爲佈局管理器(MigLayout)不知道組件的確切大小(它與父代相關),所以它首先詢問其父代的大小。這個大小再次是未知的,父母的父母被問及等(直到1級或2級JPanel)。最後,它必須要求很多組件的大小(MigLayout中的方法checkParent(Container)被稱爲超過100 000次,就像上面的例子)。

,我需要做的是設置JTextArea(或者說,它駐留在JPanel)只有當文件被打開的高度,這樣的佈局管理器不必問JTextAreas父,引起遞歸地獄。

文檔打開後,我必須將高度重置爲默認值(所以高度在添加/刪除文本時調整)。

我有absolutley不知道如何做到這一點,或者如果這是要走的路,我只能確定我上面描述的是問題。

幾個注意事項:

  • 這是不是一個錯誤MigLayout,我一直在論壇上(下面的鏈接)
  • check this out (the last post)
  • 我不能把JScrollPaneJTextArea作爲其任務不僅要保存信息,而且還要顯示需要多少空間
  • 保存文檔時,我可以很容易地獲得JTextAreas的高度,因此當openin時可以使用它們摹再次

編輯: 在這個問題上所引用的文件是不是「文件」作爲JTextAreas和類似用啄,但「文件」,如在我的程序自定義類(我沒」不要提,因爲它是無關緊要的,除非它被理解爲「文件」)。

回答

1

因爲您的Document建立了分層結構,您需要一棵樹。因爲您的界面需要每個節點的控件和視圖,所以您需要一個表格。 Outline,看過here,可能是更合適的選擇。您的DocumentTreeModel將持有對文檔根Element的引用,就像示例的FileTreeModel持有對根File的引用一樣。您的RowModel將包括JLabelJCheckBoxJTextArea

+0

我需要我的程序的外觀與附圖中的完全一樣,所以這不會真的起作用... – Karlovsky120 2013-04-06 21:06:30

+0

對不起,我不知道現有的「文檔」視圖接近。 – trashgod 2013-04-06 21:19:32

+0

我不是一直在尋找替代視圖,儘可能多的我尋找一個GUI遞歸調整大小問題的解決方案... – Karlovsky120 2013-04-07 00:55:47