2012-09-26 128 views
0

我有一個插入主內容窗格的組件,出於某種原因,它沒有填充該區域。GridBagLayout不填充區域

getInstance().add(internalPanel, LayoutFactory.newFactory().setX(1).setY(1). 
      setWeightX(1).setWeightY(1).setFill(GridBagConstraints.BOTH)); 

我做了LayoutFactory專門爲GridBagLayout,它只是設置該屬性,返回的對象。

基本上,問題在於,當我將組件添加到內容窗格時,它不會填充專用於它的空間。這需要絕對最低限度,好像weightXweightY設置爲0.我嘗試過setAnchor(GridBagConstraints.FIRST_LINE_START)setAnchor(GridBagConstraints.NORTHWEST)。這個程序也沒有任何明顯的影響。另外,當我設置組件的邊框時,它只填充部分空間,所以它不是我添加到組件的問題。

值得注意的是,組件出現在空間的中心,並沒有跟隨錨點。從here,我想我的問題是weightXweightY屬性。查看內容窗格的其他組件,權重將在每個組件上設置。

getInstance().add(MainFrame.buttons, LayoutFactory.newFactory().setX(0).setY(1). 
      setWeightY(1).setWeightX(0).setFill(GridBagConstraints.BOTH)); 

getInstance().add(panel, LayoutFactory.newFactory().setX(0).setY(0).setWidth(2) 
      .setWeightX(1).setWeightY(0).setAnchor(GridBagConstraints.FIRST_LINE_START) 
      .setFill(GridBagConstraints.NONE)); 

這當然是可能的事情錯了別的地方,但我不想淹沒這個帖子文字。如果你需要更多的信息來解決這個問題,我會很樂意提供它。希望這是有道理的。我一直在使用GridBagLayout一段時間,我從來沒有遇到過這樣的事情。

Here is an image of what it looks like in the space it is supposed to be

編輯:發現了問題奠定了別的地方,因爲製作的小例子程序工作正常。由於我有點難受,I uploaded a full version of the program I am working on.不要擔心它的實際功能,我只關心工作負載面板沒有填滿空間。

+1

考慮創建併發布[sscce](http://sscce.org),以便我們可以運行和操作您的代碼。我是否也正確理解你將權重設置爲0? –

+0

是的。好吧,我想這個問題在別的地方,因爲當我做了一件事情,它完美地運作了。 [Available here。](http://pastebin.com/piAtgqmc) –

+0

我認爲你需要進行更多的調試才能至少隔離錯誤,這樣如果你無法修復它,你就可以發佈你的SSCCE。 –

回答

0

問題的解決方案:

當時加入組分到InternalPanel類型的對象,其沒有佈局管理器。 (默認爲流式佈局)

+0

爲什麼這是一個問題?請完全解釋這是如何幫助/解決問題的。 – Pureferret