zoukankan      html  css  js  c++  java
  • 图形界面系列教材 (四)- Swing五种常见的布局器

    布局器是用在容器上的。 用来决定容器上的组件摆放的位置和大小

    步骤1:绝对定位
    步骤2:FlowLayout
    步骤3:BorderLayout
    步骤4:GridLayout
    步骤5:setPreferredSize
    步骤6:CardLayout
    步骤7:练习-计算器上的按钮
    步骤8:答案-计算器上的按钮

    示例 1 : 绝对定位

    绝对定位就是指不使用布局器,组件的位置和大小需要单独指定

    package gui;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            // 设置布局器为null,即进行绝对定位,容器上的组件都需要指定位置和大小

            f.setLayout(null);

            JButton b1 = new JButton("英雄1");

            // 指定位置和大小

            b1.setBounds(50508030);

            JButton b2 = new JButton("英雄2");

            b2.setBounds(150508030);

            JButton b3 = new JButton("英雄3");

            b3.setBounds(250508030);

            // 没有指定位置和大小,不会出现在容器上

            JButton b4 = new JButton("英雄3");

            f.add(b1);

            f.add(b2);

            f.add(b3);

            // b4没有指定位置和大小,不会出现在容器上

            f.add(b4);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 2 : FlowLayout

    设置布局器为FlowLayout,顺序布局器
    容器上的组件水平摆放
    加入到容器即可,无需单独指定大小和位置

    FlowLayout

    package gui;

    import java.awt.FlowLayout;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            // 设置布局器为FlowLayerout

            // 容器上的组件水平摆放

            f.setLayout(new FlowLayout());

            JButton b1 = new JButton("英雄1");

            JButton b2 = new JButton("英雄2");

            JButton b3 = new JButton("英雄3");

            // 加入到容器即可,无需单独指定大小和位置

            f.add(b1);

            f.add(b2);

            f.add(b3);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 3 : BorderLayout

    设置布局器为BorderLayout
    容器上的组件按照上北 下南 左西 右东 中的顺序摆放

    BorderLayout

    package gui;

    import java.awt.BorderLayout;

    import java.awt.FlowLayout;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            // 设置布局器为BorderLayerout

            // 容器上的组件按照上北下南左西右东中的顺序摆放

            f.setLayout(new BorderLayout());

            JButton b1 = new JButton("洪七");

            JButton b2 = new JButton("段智兴");

            JButton b3 = new JButton("欧阳锋");

            JButton b4 = new JButton("黄药师");

            JButton b5 = new JButton("周伯通");

            // 加入到容器的时候,需要指定位置

            f.add(b1, BorderLayout.NORTH);

            f.add(b2, BorderLayout.SOUTH);

            f.add(b3, BorderLayout.WEST);

            f.add(b4, BorderLayout.EAST);

            f.add(b5, BorderLayout.CENTER);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 4 : GridLayout

    GridLayout,即网格布局器

    GridLayout

    package gui;

    import java.awt.GridLayout;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            // 设置布局器为GridLayerout,即网格布局器

            // 该GridLayerout的构造方法表示该网格是2行3列

            f.setLayout(new GridLayout(23));

            JButton b1 = new JButton("洪七");

            JButton b2 = new JButton("段智兴");

            JButton b3 = new JButton("欧阳锋");

            JButton b4 = new JButton("黄药师");

            JButton b5 = new JButton("周伯通");

            f.add(b1);

            f.add(b2);

            f.add(b3);

            f.add(b4);

            f.add(b5);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 5 : setPreferredSize

    即便 使用 布局器 ,也可以 通过setPreferredSize,向布局器建议该组件显示的大小.
     只对部分布局器起作用,比如FlowLayout可以起作用。 比如GridLayout就不起作用,因为网格布局器必须对齐

    setPreferredSize

    package gui;

    import java.awt.Dimension;

    import java.awt.FlowLayout;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            f.setLayout(new FlowLayout());

            JButton b1 = new JButton("英雄1");

            JButton b2 = new JButton("英雄2");

            JButton b3 = new JButton("英雄3");

            // 即便 使用 布局器 ,也可以 通过setPreferredSize,向布局器建议该组件显示的大小

            b3.setPreferredSize(new Dimension(18040));

            f.add(b1);

            f.add(b2);

            f.add(b3);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 6 : CardLayout

    因为CardLayout需要用到面板JComboBox这些内容暂时还没学的内容,所以放在后面讲: CardLayout

    CardLayout


    更多内容,点击了解: https://how2j.cn/k/gui/gui-layerout/405.html

  • 相关阅读:
    css如何使背景图片水平居中
    HTML特殊符号显示技巧
    自定义jquery插件
    bootstrap学习以及其插件
    自定义checkbox样式
    maven java.lang.OutOfMemoryError:PermGEn space
    Java多线程学习(吐血超详细总结)
    Maven .m2 setting.xml配置
    html a标签打开邮件
    File 类
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615454.html
Copyright © 2011-2022 走看看