我有兩個表格和兩個按鈕。我想要table-1在第一列和3個單位的寬度,然後我希望表格右側的兩個按鈕更窄(寬度爲1單位),我想要頂部的按鈕1和頂部的按鈕2底端。現在在這些按鈕的右邊,我想要另一個表格(表格-2)再寬達3個單位。爲了實現這一點,我使用了以下約束:Java GridBag佈局不正常
//table1
c = new GridBagConstraints(0, 0, 3, 2, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
c.fill = GridBagConstraints.BOTH;
outerPanel.add(all_app_scrollpane, c);
//button1
c = new GridBagConstraints(3, 0, 1, 1, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
outerPanel.add(addButton, c);
//button2
c = new GridBagConstraints(3, 1, 1, 1, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
outerPanel.add(removeButton, c);
//table2
c = new GridBagConstraints(4, 0, 3, 2, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
c.fill = GridBagConstraints.BOTH;
outerPanel.add(curr_app_scrollpane, c);
讓我們來看看table1的GridBagCOnstraints。據我所知,第一個參數指出它將從0列開始,並將是3列寬(第三個參數)。 然後button1將從第三列開始,並將是一列寬。但我認爲我知道錯誤,因爲結果與我預期的截然不同。
我想這些按鈕更窄和表寬得多。我怎樣才能做到這一點?我想用GridBag來完成這個任務,因爲這個小面板只是一個非常複雜的GUI的一小部分,整個GUI都是使用gridbag設計的。所以我不想改變編碼風格。
你的代碼產生了一個非常不同的結果,並且與我想要的東西非常相似。 GridBagConstraints構造函數的第一個參數是gridx,第三個參數是gridwidth。在你的代碼左邊的按鈕位於gridx 0上,寬度爲1. add和rem按鈕位於gridx1上,寬度爲1.右邊的按鈕位於gridx 2上,寬度爲1.因此,我沒有達到我想要的效果。 – Alptugay
這裏是從IDE的屏幕截圖,你可以看到我已經添加了一些行來將按鈕居中並且在它們之間創建間隙 http://imgur.com/DHEMD – itshorty
在你的屏幕截圖中,所有按鈕都具有相同的寬度。我想要的是使中間的按鈕更窄(我的意思是更寬) – Alptugay