GridBagLayout 類是一個靈活的布局管理器。它用於水平、垂直或沿基線對齊組件。它不需要相同尺寸的組件。每個GridBagLayout對象管理一個矩形單元格網格,每個組件動態地占據一個或多個單元格,稱為其顯示區域。 GridBagLayout 組件與 GridBagConstraints 實例關聯。這些約束用於定義組件的顯示區域及其位置。除了其約束對象之外,GridBagLayout 還考慮每個組件的最小和首選尺寸,以確定組件的尺寸。 GridBagLayout組件也排列在矩形網格中,但可以具有不同的大小,並且可以占據多行或多列。
構造函數:
- GridBagLayout():它用於創建網格包布局管理器。
常用方法:
- 刪除布局組件(組件cmp):從此布局中刪除指定的組件。
- getLayoutAlignmentY(容器 p):返回沿 y 軸的對齊方式。
- addLayoutComponent(組件cmp,對象cons):將具有指定名稱的指定組件添加到布局中。
- toString():返回此網格包布局值的字符串表示形式。
- getLayoutAlignmentX(Container p):返回沿 x 軸的對齊方式。
- getConstraints(組件 cmp):獲取指定組件的約束。
- 最大布局大小(容器 tar):給定指定目標容器中的組件,返回此布局的最大尺寸。
- 最小布局尺寸(容器標準):使用此網格包布局確定父容器的最小尺寸。
以下示例程序旨在說明 GridBagLayout 類:
- 程序1:下麵的程序將幾個行和列組件排列在一個J框架,其實例類名為“Gridbag演示”。我們創造 4J按鈕名為“的組件 Java “,”布局“,”經理“,”演示”,然後將它們添加到J框架通過方法add()。我們通過方法設置框架的大小和可見性setSize()和setVisible()。布局通過方法設置setLayout().
Java
// Java program to demonstrate GridBagLayout class.
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.*;
// class extends JFrame
public class GridbagDemo extends JFrame {
GridbagDemo()
{
// Function to set title of JFrame.
setTitle("GridBagLayoutDemo");
// Creating Object of Jpanel class
JPanel p = new JPanel();
// set the layout
p.setLayout(new GridBagLayout());
// creates a constraints object
GridBagConstraints c = new GridBagConstraints();
// insets for all components
c.insets = new Insets(2, 2, 2, 2);
// column 0
c.gridx = 0;
// row 0
c.gridy = 0;
// increases components width by 10 pixels
c.ipadx = 15;
// increases components height by 50 pixels
c.ipady = 50;
// constraints passed in
p.add(new JButton("Java Swing"), c);
// column 1
c.gridx = 1;
// increases components width by 70 pixels
c.ipadx = 90;
// increases components height by 40 pixels
c.ipady = 40;
// constraints passed in
p.add(new JButton("Layout"), c);
// column 0
c.gridx = 0;
// row 2
c.gridy = 1;
// increases components width by 20 pixels
c.ipadx = 20;
// increases components height by 20 pixels
c.ipady = 20;
// constraints passed in
p.add(new JButton("Manager"), c);
// increases components width by 10 pixels
c.ipadx = 10;
// column 1
c.gridx = 1;
// constraints passed in
p.add(new JButton("Demo"), c);
// Creating Object of "wndcloser"
// class of windowlistener
WindowListener wndCloser = new WindowAdapter() {
public void windowClosing(WindowEvent e)
{
// exit the system
System.exit(0);
}
};
// add the actionwindowlistener
addWindowListener(wndCloser);
// add the content
getContentPane().add(p);
// Function to set size of JFrame.
setSize(600, 400);
// Function to set visibility of JFrame.
setVisible(true);
}
// Main Method
public static void main(String[] args)
{
// calling the constructor
new GridbagDemo();
}
}
輸出:
- 程序2:下麵的程序將幾個行和列組件排列在一個J框架,其實例類名為“Gridbag演示”。我們創造了5個J按鈕組件,然後將它們添加到J框架通過方法add()。我們通過setTitle方法設置框架的標題、大小和可見性,setSize()和setVisible()。布局通過方法設置setLayout().
Java
// Java program to demonstrate GridBagLayout class.
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JFrame;
// Constructor of GridBagLayout class.
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 condition
if (RIGHT_TO_LEFT) {
pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
}
// Declaration of objects of JButton class
JButton button;
// set the layout
pane.setLayout(new GridBagLayout());
// creates a constraints object
GridBagConstraints c = new GridBagConstraints();
// if condition
if (shouldFill) {
// natural height, maximum width
c.fill = GridBagConstraints.HORIZONTAL;
}
// Initialization of object
// "button" of JButton class.
button = new JButton("Button 1");
// if condition
if (shouldWeightX) {
c.weightx = 0.5;
}
// column 0
c.gridx = 0;
// row 0
c.gridy = 0;
// Adding JButton "button" on JFrame.
pane.add(button, c);
// Initialization of object
// "button" of JButton class.
button = new JButton("Button 2");
// column 1
c.gridx = 1;
// row 0
c.gridy = 0;
// Adding JButton "button" on JFrame.
pane.add(button, c);
// Initialization of object
// "button" of JButton class.
button = new JButton("Button 3");
// column 1
c.gridx = 2;
// row 0
c.gridy = 0;
// Adding JButton "button" on JFrame.
pane.add(button, c);
// Initialization of object
// "button" of JButton class.
button = new JButton("Long-Named Button 4");
// increases components height by 40 pixels
c.ipady = 40;
// column width 0
c.weightx = 0.0;
// row width 3
c.gridwidth = 3;
// column 1
c.gridx = 0;
// row 1
c.gridy = 1;
// Adding JButton "button" on JFrame.
pane.add(button, c);
// Initialization of object
// "button" of JButton class.
button = new JButton("Button 5");
// increases components height by 0 pixels
c.ipady = 0;
// request any extra vertical space
c.weighty = 1.0;
// bottom of space
c.anchor = GridBagConstraints.PAGE_END;
// top padding
c.insets = new Insets(10, 0, 0, 0);
// column 2
c.gridx = 1;
// 2 columns wide
c.gridwidth = 2;
// row 3
c.gridy = 2;
// Adding JButton "button" on JFrame.
pane.add(button, c);
}
// Create the GUI and show it. For thread safety,
// this method should be invoked from the
// event-dispatching thread.
private static void createAndShowGUI()
{
// to set a Jframe default
JFrame.setDefaultLookAndFeelDecorated(true);
// Create and set up the window.
JFrame frame = new JFrame("GridBagLayoutDemo");
// Function to close the operation of JFrame.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// adding the content pane.
addComponentsToPane(frame.getContentPane());
// Display the window.
frame.pack();
// Function to set visible status of JFrame.
frame.setVisible(true);
}
// Main Method
public static void main(String[] args)
{
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run()
{
createAndShowGUI();
}
});
}
}
輸出:
注意:上述程序可能無法在在線 IDE 中運行。請使用離線編譯器。
參考: https://docs.oracle.com/javase/7/docs/api/java/awt/GridBagLayout.html
相關用法
- Java AWT GridLayout用法及代碼示例
- Java AWT Dimension用法及代碼示例
- Java AWT Choice用法及代碼示例
- Java AWT MenuShortcut用法及代碼示例
- Java AWT SpringLayout用法及代碼示例
- Java AWT Desktop用法及代碼示例
- Java AWT BoxLayout用法及代碼示例
- Java AWT CardLayout用法及代碼示例
- Java AWT Canvas用法及代碼示例
- Java AWT BorderLayout用法及代碼示例
- Java AWT Color用法及代碼示例
- Java ArrayList add()用法及代碼示例
- Java ArrayList addAll()用法及代碼示例
- Java ArrayList clear()用法及代碼示例
- Java ArrayList clone()用法及代碼示例
- Java ArrayList contains()用法及代碼示例
- Java ArrayList get()用法及代碼示例
- Java ArrayList indexOf()用法及代碼示例
- Java ArrayList removeAll()用法及代碼示例
- Java ArrayList remove()用法及代碼示例
- Java ArrayList size()用法及代碼示例
- Java ArrayList isEmpty()用法及代碼示例
- Java ArrayList subList()用法及代碼示例
- Java ArrayList set()用法及代碼示例
注:本文由純淨天空篩選整理自Shivi_Aggarwal大神的英文原創作品 Java AWT | GridBagLayout Class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。