AWT GridBagLayout类

1 什么是Java AWT GridBagLayout

GridBagLayout类以水平和垂直方式排列组件。

2 Java AWT GridBagLayout的语法

public class GridBagLayout
   extends Object
      implements LayoutManager2, Serializable

3 Java AWT GridBagLayout的构造方法

构造方法 描述
GridBagLayout() 创建网格包布局管理器。

4 Java AWT GridBagLayout的方法

方法 描述
void addLayoutComponent(Component comp, Object constraints) 使用指定的约束对象将指定的组件添加到布局。
void addLayoutComponent(String name, Component comp) 将具有指定名称的指定组件添加到布局中。
protected void adjustForGravity(GridBagConstraints constraints, Rectangle r) 根据约束几何图形和焊盘将 x、y、宽度和高度字段调整为正确的值。
protected void AdjustForGravity(GridBagConstraints constraints, Rectangle r) 此方法已过时,仅用于向后兼容;新代码应改为调用 adjustForGravity。
protected void arrangeGrid(Container parent) 布置网格。
protected void ArrangeGrid(Container parent) 此方法已过时,仅用于向后兼容;新代码应该改为调用arrangeGrid。
GridBagConstraints getConstraints(Component comp) 获取指定组件的约束。
float getLayoutAlignmentX(Container parent) 返回沿 x 轴的对齐方式。
float getLayoutAlignmentY(Container parent) 返回沿 y 轴的对齐方式。
int[][] getLayoutDimensions() 确定布局网格的列宽和行高。
protected java.awt.GridBagLayoutInfo getLayoutInfo(Container parent, int sizeflag) 为当前的一组托管子项填充 GridBagLayoutInfo 的实例。
protected java.awt.GridBagLayoutInfo GetLayoutInfo(Container parent, int sizeflag) 此方法已过时,仅用于向后兼容;新代码应改为调用 getLayoutInfo。
Point getLayoutOrigin() 在目标容器的图形坐标空间中确定布局区域的原点。
double[][] getLayoutWeights() 确定布局网格的列和行的权重。
protected Dimension getMinSize(Container parent, java.awt.GridBagLayoutInfo info) 根据来自 getLayoutInfo() 的信息计算出 master 的最小尺寸。
protected Dimension GetMinSize(Container parent, java.awt.GridBagLayoutInfo info) 此方法已过时,仅用于向后兼容;新代码应改为调用 getMinSize。
void invalidateLayout(Container target) 使布局无效,表示如果布局管理器已缓存信息,则应将其丢弃。
void layoutContainer(Container parent) 使用此网格包布局来布置指定的容器。
Point location(int x, int y) 确定布局网格中的哪个单元格包含 (x, y) 指定的点。
protected GridBagConstraints lookupConstraints(Component comp) 检索指定组件的约束。
Dimension maximumLayoutSize(Container target) 给定指定目标容器中的组件,返回此布局的最大尺寸。
Dimension minimumLayoutSize(Container parent) 使用此网格包布局确定父容器的最小尺寸。
Dimension preferredLayoutSize(Container parent) 使用此网格包布局确定父容器的首选大小。
void removeLayoutComponent(Component comp) 从此布局中删除指定的组件。
void setConstraints(Component comp, GridBagConstraints constraints) 设置此布局中指定组件的约束。
String toString() 返回此网格包布局值的字符串表示形式。

5 Java AWT GridBagLayout的例子

让我们看一个简单的Java AWT GridBagLayout类示例。

package com.yiidian;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class AwtLayoutDemo {
   private Frame mainFrame;
   private Label headerLabel;
   private Label statusLabel;
   private Panel controlPanel;
   private Label msglabel;

   public AwtLayoutDemo(){
      prepareGUI();
   }

   public static void main(String[] args){
      AwtLayoutDemo  awtLayoutDemo = new AwtLayoutDemo();  
      awtLayoutDemo.showGridBagLayoutDemo();       
   }
      
   private void prepareGUI(){
      mainFrame = new Frame("一点教程网:Java AWT Examples");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      headerLabel = new Label();
      headerLabel.setAlignment(Label.CENTER);
      statusLabel = new Label();        
      statusLabel.setAlignment(Label.CENTER);
      statusLabel.setSize(350,100);

      msglabel = new Label();
      msglabel.setAlignment(Label.CENTER);
      msglabel.setText("Welcome to yiidian.com AWT Tutorial.");

      controlPanel = new Panel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }

   private void showGridBagLayoutDemo(){
      headerLabel.setText("Layout in action: GridBagLayout");      

      Panel panel = new Panel();
      panel.setBackground(Color.darkGray);
      panel.setSize(300,300);
      GridBagLayout layout = new GridBagLayout();

      panel.setLayout(layout);        
      GridBagConstraints gbc = new GridBagConstraints();

      gbc.fill = GridBagConstraints.HORIZONTAL;
      gbc.gridx = 0;
      gbc.gridy = 0;
      panel.add(new Button("Button 1"),gbc);

      gbc.gridx = 1;
      gbc.gridy = 0;
      panel.add(new Button("Button 2"),gbc); 

      gbc.fill = GridBagConstraints.HORIZONTAL;
      gbc.ipady = 20;   
      gbc.gridx = 0;
      gbc.gridy = 1;
      panel.add(new Button("Button 3"),gbc); 

      gbc.gridx = 1;
      gbc.gridy = 1;       
      panel.add(new Button("Button 4"),gbc);  

      gbc.gridx = 0;
      gbc.gridy = 2;      
      gbc.fill = GridBagConstraints.HORIZONTAL;
      gbc.gridwidth = 2;
      panel.add(new Button("Button 5"),gbc);  

      controlPanel.add(panel);

      mainFrame.setVisible(true);  
   }
}

输出结果为:

热门文章

优秀文章