Swing GridBagLayout類

2019-10-16 22:11:00

GridBagLayout類以水平和垂直方式排列元件。

類宣告

以下是java.awt.GridBagLayout類的宣告 -

public class GridBagLayout
   extends Object
      implements LayoutManager2, Serializable

欄位

以下是java.awt.GridBagLayout類的欄位 -

  • static int DEFAULT_SIZE - 指示元件的大小或間隙應用於特定範圍值。
  • static int PREFERRED_SIZE - 表示元件的首選大小或間隙應用於特定範圍值。

類建構函式

編號 建構函式 描述
1 GridBagLayout() 建立網格包布局管理器。

類方法

編號 類方法 描述說明
1 void addLayoutComponent(Component comp, Object constraints) 使用指定的約束物件將指定的元件新增到布局中。
2 void addLayoutComponent(String name, Component comp) 將具有指定名稱的指定元件新增到布局中。
3 protected void adjustForGravity(GridBagConstraints constraints, Rectangle r) 調節XY的寬度和高度,欄位根據約束幾何結構和填充正確的值。
4 protected void AdjustForGravity(GridBagConstraints constraints, Rectangle r) 此方法已過時,僅提供向後相容性; 應該呼叫新的adjustForGravity方法。
5 protected void arrangeGrid(Container parent) 布局網格。
6 protected void ArrangeGrid(Container parent) 此方法已過時,僅供向後相容; 新程式碼應該呼叫arrangeGrid來代替。
7 GridBagConstraints getConstraints(Component comp) 獲取指定元件的約束。
8 float getLayoutAlignmentX(Container parent) 返回沿x軸的對齊方式。
9 float getLayoutAlignmentY(Container parent) 返回沿y軸的對齊方式。
10 int[][] getLayoutDimensions() 確定布局網格的列寬和行高。
11 protected GridBagLayoutInfo getLayoutInfo(Container parent, int sizeflag) 為當前托管子集填充GridBagLayoutInfo的範例。
12 protected GridBagLayoutInfo GetLayoutInfo(Container parent, int sizeflag) 此方法已過時,僅供向後相容; 新程式碼應該呼叫setLayoutInfo
13 Point getLayoutOrigin() 在目標容器的圖形坐標空間中確定布局區域的原點。
14 double[][] getLayoutWeights() 確定布局網格的列和行的權重。
15 protected Dimension getMinSize(Container parent, GridBagLayoutInfo info) 根據getLayoutInfo()中的資訊計算出master的最小值。
16 protected Dimension GetMinSize(Container parent, GridBagLayoutInfo info) 此方法已過時,僅供向後相容; 新程式碼應該呼叫setMinSize方法。
17 void invalidateLayout(Container target) 使布局無效,表明如果布局管理器快取了資訊,則應將其丟棄。
18 void layoutContainer(Container parent) 使用此網格包布局布置指定的容器。
19 Point location(int x, int y) 確定布局網格中的哪個單元格包含(x,y)指定的點。
20 protected GridBagConstraints lookupConstraints(Component comp) 檢索指定元件的約束。
21 Dimension maximumLayoutSize(Container target) 給定指定目標容器中的元件,返回此布局的最大值。
22 Dimension minimumLayoutSize(Container parent) 使用此網格包布局確定父容器的最小值。
23 Dimension preferredLayoutSize(Container parent) 使用此網格包布局確定父容器的首選大小。
24 void removeLayoutComponent(Component comp) 從此布局中刪除指定的元件。
25 void setConstraints(Component comp, GridBagConstraints constraints) 在此佈局中設定指定元件的約束。
26 String toString() 返回此網格包布局值的字串表示形式。

方法繼承

該類繼承以下類中的方法 -

java.lang.Object

GridBagLayout範例

使用編輯器建立以下Java程式:GridBagLayout.java

package com.yiibai.layout;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class GridBagLayoutDemo {
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel;
   private JLabel msglabel;

   public GridBagLayoutDemo(){
      prepareGUI();
   }
   public static void main(String[] args){
       GridBagLayoutDemo swingLayoutDemo = new GridBagLayoutDemo();  
      swingLayoutDemo.showGridBagLayoutDemo();       
   }
   private void prepareGUI(){
      mainFrame = new JFrame("Java SWING GridBagLayoutDemo(tw511.com)");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));

      headerLabel = new JLabel("",JLabel.CENTER );
      statusLabel = new JLabel("",JLabel.CENTER);        
      statusLabel.setSize(350,100);

      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      controlPanel = new JPanel();
      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");      

      JPanel panel = new JPanel();
      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 JButton("Button - A"),gbc);

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

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

      gbc.gridx = 1;
      gbc.gridy = 1;       
      panel.add(new JButton("Button - D"),gbc);  

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

      controlPanel.add(panel);
      mainFrame.setVisible(true);  
   }
}

執行上面範例程式碼,得到以下結果:

GridBagLayout