Computer >> Máy Tính >  >> Lập trình >> Java

Tầm quan trọng của lớp GridBagConstraints trong Java là gì?

A GridBagLayout là một trình quản lý bố cục rất linh hoạt cho phép chúng tôi định vị các thành phần tương đối với nhau bằng cách sử dụng ràng buộc . Mỗi GridBagLayout sử dụng một lưới ô hình chữ nhật động với mỗi thành phần chiếm một hoặc nhiều ô được gọi là vùng hiển thị của nó. Mỗi thành phần được quản lý bởi GridBagLayout được liên kết với GridBagConstraints thể hiện chỉ định cách thành phần được bố trí trong vùng hiển thị của nó.

GridBagConstraints

Chúng tôi có thể tùy chỉnh GridBagConstraints đối tượng bằng cách đặt một hoặc nhiều biến cá thể công khai của nó. Các biến này chỉ định thành phần vị trí, kích thước, yếu tố tăng trưởng, neo, chèn, lấp đầy và đệm .

  • gridx :Giá trị int chỉ định ô ngoài cùng bên trái mà thành phần chiếm giữ. gridx chỉ định cột mà thành phần sẽ được đặt.
  • có lưới :Giá trị int chỉ định ô trên cùng mà thành phần chiếm giữ. lưới chỉ định hàng mà nó sẽ được đặt.
  • độ sáng tối :Giá trị int chỉ định số lượng ô dọc mà một thành phần chiếm giữ.
  • độ rộng lưới :Giá trị int chỉ định số ô ngang mà một thành phần chiếm giữ.
  • ipadx :Một giá trị int chỉ định số lượng phần đệm ngang bên trong sẽ được thêm vào mỗi điều khiển.
  • ipady :Giá trị int chỉ định số lượng phần đệm dọc bên trong sẽ được thêm vào mỗi điều khiển.
  • nội bộ :Một đối tượng Insets chỉ định lượng không gian trống còn lại ở mỗi bên của ô.
  • weightx :Giá trị kép chỉ định cách phân phối không gian theo chiều ngang bổ sung nếu bố cục kết quả theo chiều ngang nhỏ hơn diện tích được phân bổ.
  • trọng lượng :Giá trị kép chỉ định cách phân bổ không gian theo chiều dọc bổ sung nếu bố cục kết quả nhỏ hơn theo chiều dọc so với diện tích được phân bổ.
  • neo :Một giá trị int chỉ định sự liên kết của một thành phần trong một ô.
  • điền :Một giá trị int chỉ định những việc cần làm với khoảng trống thừa trong một ô.
  • LIÊN QUAN :Đối với trường gridx và gridy, trường này chỉ định rằng thành phần sẽ được đặt bên cạnh thành phần được thêm cuối cùng. Đối với trường độ rộng lưới và độ sáng lưới, trường này chỉ định rằng thành phần sẽ là thành phần tiếp theo đến cuối cùng trong một hàng hoặc cột.
  • NHẮC LẠI :Đối với trường độ rộng lưới và độ sáng lưới, trường này chỉ định rằng một thành phần là thành phần cuối cùng trong một hàng hoặc cột.

Ví dụ

import java.awt.*;
import javax.swing.*;
public class GridBagLayoutTest {
   public static void main(String[] a) {
      JFrame frame = new JFrame("GridBagLayout Test");
      Container myPane = frame.getContentPane();
      myPane.setLayout(new GridBagLayout());
      GridBagConstraints c = new GridBagConstraints();
      setMyConstraints(c,0,0,GridBagConstraints.CENTER);
      myPane.add(getFieldPanel(),c);
      setMyConstraints(c,0,1,GridBagConstraints.CENTER);
      myPane.add(getButtonPanel(),c);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(300, 250);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }
   private static JPanel getFieldPanel() {
      JPanel p = new JPanel(new GridBagLayout());
      p.setBorder(BorderFactory.createTitledBorder("Details"));
      GridBagConstraints c = new GridBagConstraints();
      setMyConstraints(c,0,0,GridBagConstraints.EAST);
      p.add(new JLabel("Name:"),c);
      setMyConstraints(c,1,0,GridBagConstraints.WEST);
      p.add(new JTextField(16),c);
      setMyConstraints(c,0,1,GridBagConstraints.EAST);
      p.add(new JLabel("System:"),c);
      setMyConstraints(c,1,1,GridBagConstraints.WEST);
      p.add(getSystemPanel(),c);
      setMyConstraints(c,0,2,GridBagConstraints.EAST);
      p.add(new JLabel("Language:"),c);
      setMyConstraints(c,1,2,GridBagConstraints.WEST);
      p.add(getLanguagePanel(),c);
      setMyConstraints(c,0,3,GridBagConstraints.EAST);
      p.add(new JLabel("Year:"),c);
      setMyConstraints(c,1,3,GridBagConstraints.WEST);
      p.add(new JComboBox(new String[] {"2019","2020","2021"}),c);
      return p;
   }
   private static JPanel getButtonPanel() {
      JPanel p = new JPanel(new GridBagLayout());
      p.add(new JButton("OK"));
      p.add(new JButton("Cancel"));
      return p;
   }
   private static JPanel getSystemPanel() {
      JRadioButton winButton = new JRadioButton("Windows",true);
      JRadioButton macButton = new JRadioButton("Mac",false);
      ButtonGroup systemGroup = new ButtonGroup();
      systemGroup.add(winButton);
      systemGroup.add(macButton);
      JPanel p = new JPanel(new GridBagLayout());
      p.add(winButton);
      p.add(macButton);
      return p;
   }
   private static JPanel getLanguagePanel() {
     JPanel p = new JPanel(new GridBagLayout());
      p.add(new JCheckBox("Java",true));
      p.add(new JCheckBox("Python",true));
      p.add(new JCheckBox("Spark",false));
      return p;
   }
   private static void setMyConstraints(GridBagConstraints c, int gridx, int gridy, int anchor) {
      c.gridx = gridx;
      c.gridy = gridy;
      c.anchor = anchor;
   }
}

Đầu ra

Tầm quan trọng của lớp GridBagConstraints trong Java là gì?