2011-04-27 89 views
2

在我的應用程序中,我正在尋找使用動態生成的按鈕填充JPanel。我正在使用GridBagLayout。GridLayout的問題

1.)當我設置佈局管理器來填充只有一列很多列,即使只有一個按鈕,它填充整個區域是好的。

2.)在一列多行相同佈局的情況下,它不是填充整個JPanel,而是將按鈕放在面板的頂部。我想填充按鈕,以適應面板,我不想看到任何空的空間。

1和2是2個不同的面板。

我想知道爲什麼它對第二個面板我正在談論當我使用相同類型的代碼。我使用的代碼如下所示。

left_panel.setLayout(new GridLayout(count, 1, 5, 5));
top_panel.setLayout(new GridLayout(1, count, 5, 5));

這裏left_panel和top_panel是2周的JPanel

+0

它是在標題&代碼中使用'GridLayout',在第二個句子中使用'GridBagLayout'還是兩者的組合?爲了更快地獲得更好的幫助,請發佈[SSCCE](http://pscode.org/sscce.html)。 – 2011-04-27 07:41:15

+0

沒有它的只是GridLayout,而不是gridbaglayout ..我給出的代碼塊是我爲我正在使用的JPanel佈局設置的唯一地方。並在循環中,我將按鈕添加到它.. – Deepak 2011-04-27 07:55:25

+0

@Deepak「我給出的代碼塊是我爲我正在使用的JPanel設置佈局的唯一地方。」顯然至少有兩個'JPanel'實例。我可以問「父容器有什麼佈局?」,「代碼是調用'pack()'還是'validate()'?」,「是否在EDT上創建了GUI?」和更多的問題。但是,由於SSCCE能夠回答所有這些問題,所以我不會爲玩'20個問題而煩惱。祝你好運。 – 2011-04-27 08:01:39

回答

3

在這種example,它使用GridLayout,按鈕填寫在每個遊戲級別的兩個方向的可用空間。您可以將您的代碼與resetGame()中的代碼進行比較。

+0

但他們不是隻處理一個JPanel? – Deepak 2011-04-28 03:35:16

+0

所以他們就像使用4行5列。但我想使用5行和1列..這是我在哪裏遇到麻煩.. – Deepak 2011-04-28 03:36:29

+0

不要忘記,您可以使用'0'來表示任意數量的行或列(但不是兩個),如圖所示[這裏](http://stackoverflow.com/questions/5750068/java-swing-how-to-change-gui-dynamically/5751044#5751044)。 – trashgod 2011-04-28 04:23:43