2013-12-13 101 views
2

我試圖移動我的按鈕和標籤。我希望按鈕位於右下角,而標籤正好位於它們的上方,但無論如何更改佈局系統,它們都卡在同一行,並且根本不會移動。如何讓他們移動?GridBagLayout元素不移動

 setLayout(new GridBagLayout()); 
     GridBagConstraints gc = new GridBagConstraints(); 

     gc.anchor = GridBagConstraints.CENTER; 
     gc.weighty = 1; 
     gc.gridx = 0; 
     gc.gridy = 0; 
     gc.ipadx = 5; 
     pane.add(explain_lbl, gc); 
     gc.ipadx = 1; 
     gc.gridy = 1; 
     gc.anchor = GridBagConstraints.PAGE_END; //bottom of space 
     pane.add(btn_play_normal, gc); 
     gc.ipadx = 6; 
     gc.gridy = 1;; 
     gc.anchor = GridBagConstraints.PAGE_END; //bottom of space 

     gc.fill = GridBagConstraints.HORIZONTAL; 
     gc.ipady = 0;  //reset to default 
     gc.weighty = 1.0; //request any extra vertical space 
     gc.anchor = GridBagConstraints.PAGE_END; //bottom of space 
     gc.insets = new Insets(10,0,0,0); //top padding 
     gc.gridx = 1;  //aligned with button 2 
     gc.gridwidth = 2; //2 columns wide 
     gc.gridy = 2;  //third row 
     pane.add(btn_play_ptr, gc); 
+0

爲了更好地幫助越早,張貼[SSCCE(http://sscce.org/)。 –

+0

*「GridBagLayout元素不移動?」*添加'?'發表聲明並不是一個問題。我編輯了問題以添加一個。請[仔細查看更改](http://stackoverflow.com/posts/20568108/revisions)如果這是***不是你的問題,請添加一個你自己的! –

回答

3

你不設置的pane容器是接受你的網格包的組件佈局。您需要將佈局設置爲GridBagLayout以使佈局工作。

具體做法是:

setLayout(new GridBagLayout()); // (A) 

// .... 

pane.add(btn_play_normal, gc); // (B) 

// ... 

pane.add(btn_play_ptr, gc); // (C) 

您要添加的組件窗格使用的GridBagConstraints,氣相色譜法,(B)和(C),但你似乎是設置this容器的佈局(不管它是)在(A)中,但不是pane容器。

一個解決方案:設置面板的佈局:

pane.setLayout(new GridBagLayout()); 
+0

非常感謝:)現在可以工作。 – Paludan

+0

@ user2966573:有時,我們所有人都需要的僅僅是另一組眼睛來查看我們的代碼,我自己包括在內。別客氣。 –