[英]GridBagLayout with buttons
我正在嘗試繪制一個帶有按鈕的面板,看起來像這樣:
我這樣創建“ buttonPanel”:
buttonPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = 0;
gbc.weighty = 0;
gbc.gridx = 0; gbc.gridy = 0;
gbc.gridwidth = 1; gbc.gridheight = 2;
buttonPanel.add(new JButton("A0"), gbc);
gbc.gridx = 1; gbc.gridy = 0;
gbc.gridwidth = 1; gbc.gridheight = 2;
buttonPanel.add(new JButton("A1"), gbc);
gbc.gridx = 2; gbc.gridy = 0;
gbc.gridwidth = 2; gbc.gridheight = 2;
buttonPanel.add(new JButton("A2"), gbc);
gbc.gridx = 0; gbc.gridy = 2;
gbc.gridwidth = 3; gbc.gridheight = 2;
buttonPanel.add(new JButton("A3"), gbc);
gbc.gridx = 3; gbc.gridy = 2;
gbc.gridwidth = 1; gbc.gridheight = 2;
buttonPanel.add(new JButton("A4"), gbc);
但是結果看起來像這樣:
由於按鈕“ A3”的gridwidth = 3,它應該到達按鈕“ A2”的中間嗎?
有什么幫助嗎?
編輯1:增加面板大小或在按鈕上設置更長的文本不會更改任何內容:
編輯2:為按鈕“ A2”和“ A3”設置weightx = 1有助於:
這對我來說是可以接受的,但是如果按鈕“ A4”與按鈕“ A0”和“ A1”具有相同的寬度會很好
將A2和A3的權重設置為1.0。
盡管按鈕“ A4”與按鈕“ A0”和“ A1”具有相同的寬度會很好
您不能讓一個單元格占用另一個單元格的部分空間。
因此,您需要通過創建4個(不可見的)虛擬組件來“偽造”它。 這使您可以定義4列的網格。
然后,A2的網格寬度為“ 2”,A3的網格寬度為“ 3”。 其他的網格寬度將為1。因此,現在每行的總單元格寬度為4,以匹配虛擬單元格。
簽出: 為什么此GridBagLayout不按計划顯示? 作為這種方法的一個例子。
或更簡單的選擇是使用相對布局 。 它允許您為組件指定相對大小。 因此,您將需要兩個面板。 在第一個組件中,相對大小為1、1、2,第二個組件為3、1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.