簡體   English   中英

帶有按鈕的GridBagLayout

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM