Java 的布局管理器GridBagLayout的使用方法【图文说明】

GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的,

GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。

每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域

下面就通过一个记事本案例去说明GridBagLayout的使用方法。

 

分析:

带有箭头的说明可以拉伸的。

4占用4个格子,6占用4个格子。如果设置6可以拉伸了,那么4也会跟着拉伸。

但是如果设置4拉伸,那么7所在的列也可以拉伸,所以4不能设置拉伸。我们应该设置4是跟随6进行拉伸。

灰色的线是为了看清布局的大概,组件占用的格子数。

运行时的显示效果



import java.awt.*;
import javax.swing.*;

public class GridBagDemo extends JFrame {
    public static void main(String args[]) {
        GridBagDemo demo = new GridBagDemo();
    }

    public GridBagDemo() {
        init();
        this.setSize(600,600);
        this.setVisible(true);
    }
    public void init() {
        j1 = new JButton("打开");
        j2 = new JButton("保存");
        j3 = new JButton("另存为");
        j4 = new JPanel();
        String[] str = { "java笔记", "C#笔记", "HTML5笔记" };
        j5 = new JComboBox(str);
        j6 = new JTextField();
        j7 = new JButton("清空");
        j8 = new JList(str);
        j9 = new JTextArea();
     j9.setBackground(Color.PINK);//为了看出效果,设置了颜色
        GridBagLayout layout = new GridBagLayout();
        this.setLayout(layout);
        this.add(j1);//把组件添加进jframe
        this.add(j2);
        this.add(j3);
        this.add(j4);
        this.add(j5);
        this.add(j6);
        this.add(j7);
        this.add(j8);
        this.add(j9);
        GridBagConstraints s= new GridBagConstraints();//定义一个GridBagConstraints,
        //是用来控制添加进的组件的显示位置
        s.fill = GridBagConstraints.BOTH;
        //该方法是为了设置如果组件所在的区域比组件本身要大时的显示情况
        //NONE:不调整组件大小。
        //HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。
        //VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。
        //BOTH:使组件完全填满其显示区域。
        s.gridwidth=1;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
        s.weightx = 0;//该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        s.weighty=0;//该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        layout.setConstraints(j1, s);//设置组件
        s.gridwidth=1;
        s.weightx = 0;
        s.weighty=0;
        layout.setConstraints(j2, s);
        s.gridwidth=1;
        s.weightx = 0;
        s.weighty=0;
        layout.setConstraints(j3, s);
        s.gridwidth=0;//该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
        s.weightx = 0;//不能为1,j4是占了4个格,并且可以横向拉伸,
        //但是如果为1,后面行的列的格也会跟着拉伸,导致j7所在的列也可以拉伸
        //所以应该是跟着j6进行拉伸
        s.weighty=0;
        layout.setConstraints(j4, s)
        ;s.gridwidth=2;
        s.weightx = 0;
        s.weighty=0;
        layout.setConstraints(j5, s);
        ;s.gridwidth=4;
        s.weightx = 1;
        s.weighty=0;
        layout.setConstraints(j6, s);
        ;s.gridwidth=0;
        s.weightx = 0;
        s.weighty=0;
        layout.setConstraints(j7, s);
        ;s.gridwidth=2;
        s.weightx = 0;
        s.weighty=1;
        layout.setConstraints(j8, s);
        ;s.gridwidth=5;
        s.weightx = 0;
        s.weighty=1;
        layout.setConstraints(j9, s);
    }
    JButton j1;
    JButton j2;
    JButton j3;
    JPanel j4;
    JComboBox j5;
    JTextField j6;
    JButton j7;
    JList j8;
    JTextArea j9;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GridBagLayoutJava中最灵活和最复杂的布局管理器之一,它可以让开发者在窗口中创建复杂的布局。它提供了一个网格和一个包含网格的单元格,网格中的每个单元格都可以放置一个组件,而单元格的大小可以根据需要进行调整。 GridBagLayout布局管理器的实现非常灵活,允许您将组件放置在网格中的任何位置,并根据需要为它们分配任意数量的行和列。由于其灵活性,使用GridBagLayout可能会比其他布局管理器更具挑战性,但是一旦掌握了它,您就可以创建出非常复杂的布局。 下面是一个简单的Java应用程序,用于演示如何使用GridBagLayout布局管理器: ```java import java.awt.*; import javax.swing.*; public class GridBagLayoutDemo { public static void main(String[] args) { JFrame frame = new JFrame("GridBagLayout Demo"); JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(5, 5, 5, 5); gbc.gridx = 0; gbc.gridy = 0; panel.add(new JLabel("Name:"), gbc); gbc.gridx = 1; gbc.gridy = 0; panel.add(new JTextField(20), gbc); gbc.gridx = 0; gbc.gridy = 1; panel.add(new JLabel("Address:"), gbc); gbc.gridx = 1; gbc.gridy = 1; panel.add(new JTextField(20), gbc); frame.add(panel); frame.setSize(300, 200); frame.setVisible(true); } } ``` 在这个示例应用程序中,我们首先创建一个JFrame和一个JPanel。然后,我们将JPanel的布局管理器设置为GridBagLayout。 接下来,我们创建一个GridBagConstraints对象,并设置它的insets属性为一个Insets对象。Insets对象是一个包含四个整数值的对象,它们分别表示组件之间的左、上、右、下边距。在这个示例中,我们将insets设置为5像素。 然后,我们使用gbc对象来指定每个组件的网格坐标,即它们应该在网格的哪个位置。我们还可以使用gbc对象来指定每个组件应该占用的行和列的数量。 最后,我们将所有组件添加到JPanel中,并将JPanel添加到JFrame中。我们还设置了JFrame的大小并使其可见。 这只是GridBagLayout的一个简单示例,但它应该足以让您开始使用这个灵活的布局管理器。要深入了解GridBagLayout的更复杂的特性和用法,请参阅Java官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值