0


GridLayout 就能实现计算器界面布局,太棒了趴~

** 大家好我是Nick,今天我们一起来学习的是 GridLayout 和 GridBagLayout,这两个管理器虽然长得差不多,但是功能对比简直一个在天一个在地,那么现在跟着Nick一起来探索学习下趴~**

GridLayout

** GridLayout布局管理器将容器分割成纵横线分隔的网格,每个网格所占的区域大小相同。当向使用GridLayout布局管理器的容器中添加组件时,默认从左向右、从上向下依次添加到每个网格中。**


** 与FlowLayout不同的是,放置在GridLayout布局管理器中的各组件的大小由组件所处的区域决定(每个组件将自动占满整个区域)。**


API


牛刀小试

效果实现


代码实现


import java.awt.*;

public class GirdLayoutDemo {
    public static void main(String[] args) {
        Frame frame = new Frame("计算器");

        //创建一个Panel对象,存放一个TextFiled组件
        Panel p = new Panel();
        p.add(new TextField(30));//可以容纳30列

        //把这个Panel添加到frame的北边区域
        frame.add(p,BorderLayout.NORTH);

        //创建一个Pane2对象,并且设置他的布局管理器为GridLayout
        Panel p2 = new Panel();

        //3行5列,横纵间距都为4像素
        p2.setLayout(new GridLayout(3,5,4,4));

        //往Panel添加内容,为了方面给按钮赋值1-10采用循环
        for (int i = 0; i < 10; i++) {
            p2.add(new Button(i+""));
        }
        //字符手动赋值
        p2.add(new Button("+"));
        p2.add(new Button("-"));
        p2.add(new Button("*"));
        p2.add(new Button("/"));
        p2.add(new Button("."));

        //把当前Panel添加到frame
        frame.add(p2);

        //窗体设置大小,可视化
        frame.pack();
        frame.setVisible(true);
    }
}

注意

  • 解决乱码问题(戳我查看)
  • 上述代码使用 Panel容器 将计算器整体分为上下两部分,上用 BorderLay 布局,下用 GridLayout 布局。

** 讲完了**GridLayout ,让我们瞅瞅还有一个和它长得很像的布局管理器,他的功能比 GridLayout 强大100倍,但是非常的难,这里我就不重点提了,因为后续Swing会有更加强大且容易的管理器替代 GridBagLayout ,接下来让我们一起来看看这个好难的管理器 GridBagLayout吧~

GridBagLayout

** GridBagLayout布局管理器的功能最强大,但也最复杂,与GridLayout布局管理器不同的是,在GridBagLayout 布局管理器中,一个组件可以跨越一个或多个网格设置位置,增加了布局的灵活性。**

** 当窗口的大小发生变化时,GridBagLayout布局管理器也可以准确地控制窗口各部分的拉伸。**

** 由于在GridBagLayaut布局中,每个组件可以占用多个网格,此时,我们往容器中添加组件的时候,就需要具体的控制每个组件占用多少个网格,java提供的GridBagConstaints类,与特定的组件绑定,可以完成具体大小和跨越性的设置。**


今天的学习就要告一段落啦!

**下一篇文章Nick将会带着大家一起学习 **

CardLayout 和 BoxLayout

喜欢的话欢迎点赞收藏加关注哦!



本文转载自: https://blog.csdn.net/weixin_50369395/article/details/123455391
版权归原作者 Nick_Bears 所有, 如有侵权,请联系我们删除。

“GridLayout 就能实现计算器界面布局,太棒了趴~”的评论:

还没有评论