Java GridBagLayout

【Java GridBagLayout】Java GridBagLayout类用于将组件垂直, 水平或沿其基线对齐。
组件的大小可能不同。每个GridBagLayout对象维护一个动态的矩形单元格网格。每个组件占据一个或多个单元格, 即其显示区域。每个组件都关联一个GridBagConstraints实例。借助约束对象, 我们在网格上排列了组件的显示区域。 GridBagLayout管理每个组件的最小和首选大小, 以确定组件的大小。
领域

修饰符和类型 领域 描述
double[] columnWeights 它用于将替代值保留到列权重。
int[] columnWidths 它用于将替代保持到列的最小宽度。
受保护的Hashtable < Component, GridBagConstraints> comptable 它用于维护组件与其网格袋约束之间的关联。
受保护的GridBagConstraints defaultConstraints 它用于保存包含默认值的gridbag约束实例。
受保护的GridBagLayoutInfo layoutInfo 它用于保存网格袋的布局信息。
受保护的静态整数 MAXGRIDSIZE 不再只是为了向后兼容而使用
受保护的静态整数 MINSIZE 它是可以通过网格袋布局布置的最小网格。
受保护的静态整数 PREFERREDSIZE 优选的网格尺寸可以通过网格袋布局来布局。
int[] rowHeights 它用于将替代控件保持在行的最小高度。
double[] rowWeights 它用于保留对行权重的替代。
有用的方法
修饰符和类型 方法 描述
void addLayoutComponent(Component comp, Object constraints) 它使用指定的约束对象将指定的组件添加到布局中。
void addLayoutComponent(String name, Component comp) 这没有效果, 因为此布局管理器不使用每个组件的字符串。
受保护的空白 adjustForGravity(GridBagConstraints constraints, Rectangle r) 它将根据约束几何图形和填充将x, y, 宽度和高度字段调整为正确的值。
protected void AdjustForGravity(GridBagConstraints constraints, Rectangle r) 此方法仅用于向后兼容
受保护的空白 arrangeGrid(Container parent) 布置网格。
受保护的空白 ArrangeGrid(Container parent) 此方法已过时, 并且向后兼容
GridBagConstraints getConstraints(Component comp) 它用于获取指定组件的约束。
float getLayoutAlignmentX(Container parent) 它返回沿x轴的对齐方式。
float getLayoutAlignmentY(Container parent) 它返回沿y轴的对齐方式。
int[][] getLayoutDimensions() 它确定布局网格的列宽和行高。
受保护的GridBagLayoutInfo getLayoutInfo(Container parent, int sizeflag) 此方法已过时, 为了向后兼容而提供。
受保护的GridBagLayoutInfo GetLayoutInfo(Container parent, int sizeflag) 此方法已过时, 为了向后兼容而提供。
Point getLayoutOrigin() 它在目标容器的图形坐标空间中确定布局区域的原点。
double[][] getLayoutWeights() 它确定布局网格的列和行的权重。
保护尺寸 getMinSize(Container parent, GridBagLayoutInfo info) 它根据getLayoutInfo中的信息计算出母版的最小大小。
保护尺寸 GetMinSize(Container parent, GridBagLayoutInfo info) 该方法已过时, 仅用于向后兼容

import java.awt.Button; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.*; public class GridBagLayoutExample extends JFrame{ public static void main(String[] args) { GridBagLayoutExample a = new GridBagLayoutExample(); } public GridBagLayoutExample() { GridBagLayoutgrid = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setLayout(grid); setTitle("GridBag Layout Example"); GridBagLayout layout = new GridBagLayout(); this.setLayout(layout); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridx = 0; gbc.gridy = 0; this.add(new Button("Button One"), gbc); gbc.gridx = 1; gbc.gridy = 0; this.add(new Button("Button two"), gbc); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.ipady = 20; gbc.gridx = 0; gbc.gridy = 1; this.add(new Button("Button Three"), gbc); gbc.gridx = 1; gbc.gridy = 1; this.add(new Button("Button Four"), gbc); gbc.gridx = 0; gbc.gridy = 2; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = 2; this.add(new Button("Button Five"), gbc); setSize(300, 300); setPreferredSize(getSize()); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } }

输出:
Java GridBagLayout

文章图片
例子2
public class GridBagLayoutDemo { final static boolean shouldFill = true; final static boolean shouldWeightX = true; final static boolean RIGHT_TO_LEFT = false; public static void addComponentsToPane(Container pane) { if (RIGHT_TO_LEFT) { pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); }JButton button; pane.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); if (shouldFill) { //natural height, maximum width c.fill = GridBagConstraints.HORIZONTAL; }button = new JButton("Button 1"); if (shouldWeightX) { c.weightx = 0.5; } c.fill = GridBagConstraints.HORIZONTAL; c.gridx = 0; c.gridy = 0; pane.add(button, c); button = new JButton("Button 2"); c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 0.5; c.gridx = 1; c.gridy = 0; pane.add(button, c); button = new JButton("Button 3"); c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 0.5; c.gridx = 2; c.gridy = 0; pane.add(button, c); button = new JButton("Long-Named Button 4"); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 40; //make this component tall c.weightx = 0.0; c.gridwidth = 3; c.gridx = 0; c.gridy = 1; pane.add(button, c); button = new JButton("5"); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 0; //reset to default c.weighty = 1.0; //request any extra vertical space c.anchor = GridBagConstraints.PAGE_END; //bottom of space c.insets = new Insets(10, 0, 0, 0); //top padding c.gridx = 1; //aligned with button 2 c.gridwidth = 2; //2 columns wide c.gridy = 2; //third row pane.add(button, c); }private static void createAndShowGUI() { //Create and set up the window. JFrame frame = new JFrame("GridBagLayoutDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Set up the content pane. addComponentsToPane(frame.getContentPane()); //Display the window. frame.pack(); frame.setVisible(true); }public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }

输出:
Java GridBagLayout

文章图片

    推荐阅读