我正在使用GRIDBACK布局工作在JavaSwing项目上。我正在尝试制作两个宽度相同、水平对齐但高度不同的面板。
像这样:
我有以下代码:
import javax.swing.*;
导入Java.AWT.*;
公共类超扩展JFrame{
公共静态void main(string[]args){
新的mega();
}
公共mega()。{
Dimension MinDimension=新Dimension();
mindimension.width=800;
mindimension.height=800;
this.setDefaultCloseOperation(jframe.exit在关闭时退出);
jpanel mainpanel=new jpanel();
mainpanel.setlayout(new gridBagLayout());
this.add(主面板);
gridBagConstraints constraints=new gridBagConstraints();
jpanel toppanel=new jpanel();
Toppanel.Background(彩色、灰色);
constraints.gridx=0;
constraints.gridy=0;
constraints.gridwidth=1;
constraints.gridheight=1;
constraints.weightx=1;
constraints.weighty=1;
constraints.insets=新插入(5、5、5、5);
constraints.anchor=gridBagConstraints.page_start;
constraints.fill=网格约束.both;
mainpanel.add(Toppanel,约束);
jpanel bottomppanel=new jpanel();
底部面板。退台(颜色。绿色);
constraints.gridx=0;
constraints.gridy=1;
constraints.gridwidth=1;
constraints.gridheight=3;
constraints.weightx=1;
constraints.weighty=1;
constraints.insets=新插入(5、5、5、5);
constraints.anchor=gridbagconstraints.page_end;
constraints.fill=网格约束.both;
mainpanel.add(底部面板,约束);
此.setVisible(真);
}
}
使用此代码,底部面板的高度应该是第一个面板的三倍,因为它占用三行,而顶部面板只占用一行。但是,我得到的看起来像这样。

因为两个面板的高度相同,所以网格高度=3约束看起来并没有什么不同。我做错什么了?
这样地:

我有以下代码:
import javax.swing.*;
import java.awt.*;
public class Mega extends JFrame {
public static void main(String[] args) {
new Mega();
}
public Mega() {
Dimension minDimension = new Dimension();
minDimension.width = 800;
minDimension.height = 800;
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new GridBagLayout());
this.add(mainPanel);
GridBagConstraints constraints = new GridBagConstraints();
JPanel topPanel = new JPanel();
topPanel.setBackground(Color.GRAY);
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 1;
constraints.weighty = 1;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.anchor = GridBagConstraints.PAGE_START;
constraints.fill = GridBagConstraints.BOTH;
mainPanel.add(topPanel, constraints);
JPanel bottomPanel = new JPanel();
bottomPanel.setBackground(Color.GREEN);
constraints.gridx = 0;
constraints.gridy = 1;
constraints.gridwidth = 1;
constraints.gridheight = 3;
constraints.weightx = 1;
constraints.weighty = 1;
constraints.insets = new Insets(5, 5, 5, 5);
constraints.anchor = GridBagConstraints.PAGE_END;
constraints.fill = GridBagConstraints.BOTH;
mainPanel.add(bottomPanel, constraints);
this.setVisible(true);
}
}
使用此代码,底部面板的高度应该是第一个面板的三倍,因为它占用三行,而顶部面板只占用一行。但是,我得到的看起来像这样。

因为两个面板的高度相同,所以网格高度=3约束看起来并没有什么不同。我做错什么了?