【发布时间】:2018-12-01 08:04:08
【问题描述】:
我正在使用 GridBag 布局开发 Java Swing 项目。我正在尝试制作两个具有相同宽度并水平对齐但高度不同的面板。
我有以下代码:
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);
}
}
使用此代码,底部面板的高度应该是第一个面板的三倍,因为它占用了三行,而顶行仅占一行。但是,我得到的看起来像这样。
gridheight = 3 约束看起来没有什么不同,因为两个面板的高度相同。我做错了什么?
【问题讨论】:
标签: java swing layout jpanel layout-manager