JUI-四大布局

步骤:

   1、JFrame窗体
   2、窗体里添加容器
   3、容器添加面板
   4、构件可以添加到“容器”中,也可以添加到“面板”里,显示效果不同。
   提醒:关于网格布局(GridLayout),行和列的关系说明可以看往期的“网格布局”的博文

四大布局:

网格布局:   GridLayout
边界布局:   BorderLayout
流布局:     FlowLayout
绝对布局:   setLayout(null);

效果图:

 代码:

class FourLayout {

    JFrame f = new JFrame();// 新建窗体f
    Container c;// 新建“容器”c

    public static void main(String[] args) {
        // 创建一个Demo类d,class后面的自命名
        FourLayout d = new FourLayout();
        d.way1();// 窗体属性
        d.way2();// 容器镶入窗体,设置面板属性
        d.f.setVisible(true);// 窗体可见
    }

    /**
     * 方法way1
     * 设置窗体的属性
     */
    public void way1(){
        f.setSize(900,780);// 窗体f的尺寸
        // Location(位置),Relative(相对的),null则为居中(默认)
        f.setLocationRelativeTo(null);// 居中显示,null(空值)

        // Default(默认),Operration(操作),点×程序停止运行
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    /**
     * 方法way2
     * 设置插入容器中面板的数量、属性
     */
    public void way2(){
        c=f.getContentPane();// 容器镶入窗体f中
        // 网格组布局(行数,列数,水平间距,垂直间距)
        c.setLayout(new GridLayout(2,2,20,30));// 容器c建立布局,网格布局

		// 面板p_1的属性
        JPanel p_1=new JPanel();// 创建面板p_1
        p_1.setLayout(new GridLayout(2,1,10,5));// 面板p_1建立布局,边界布局
        // Border(边框),Factory(工厂),create(创造),Titled(标题)
        p_1.setBorder(BorderFactory.createTitledBorder("p_1"));// 面板p_1添加边框
        p_1.setBackground(Color.pink);// 设置背景颜色


        // 图片模块标签
        JLabel jlb_01_1 = new JLabel();
        // 设置水平对齐
        jlb_01_1.setHorizontalAlignment(SwingConstants.CENTER);
        // 设置边框,RAISED 提高
        jlb_01_1.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
        jlb_01_1.setIcon(new ImageIcon(ImageLoader.load("Logo_Safran.png")));

        JPanel panel_01_2 = new JPanel();
        // 设置边框,标题边框, LEADING 领先的
        panel_01_2.setBorder(BorderFactory.createTitledBorder("01-2"));
        panel_01_2.setLayout(null);// 面板p_1建立布局,边界布局

        JPanel panel_01_2_1 = new JPanel();
        // 设置边框,标题边框, LEADING 领先的
        panel_01_2_1.setBorder(BorderFactory.createTitledBorder("01-2-1"));
        // 400* 120
        panel_01_2_1.setBounds(10,10, 240, 140);

        JPanel panel_01_2_2 = new JPanel();
        // 设置边框,标题边框, LEADING 领先的
        panel_01_2_2.setBorder(BorderFactory.createTitledBorder("01-2-2中国"));
        panel_01_2_2.setBounds(255,10, 155, 140);

        panel_01_2.add(panel_01_2_1);
        panel_01_2.add(panel_01_2_2);

        p_1.add(jlb_01_1);// 边界布局,西
        p_1.add(panel_01_2);// 边界布局,东,p_1
        c.add(p_1);

        
		// 面板p_2的属性
        JPanel p_2=new JPanel();// 创建面板
        p_2.setLayout(new GridLayout(1,2,20,5));// p_1建立布局,网格布局;行,列,水平间距,竖直间距
        // Border(边框),Factory(工厂),create(创造),Titled(标题)
        p_2.setBorder(BorderFactory.createTitledBorder("p_2"));// 面板p_2添加边框
        p_2.setBackground(Color.GREEN);// 背景颜色

        // p_2里添加按钮
        for(int i=0;i<2;i++){
            p_2.add(new JButton("按钮"+i));
        }

        c.add(p_2);// 面板p_2放于容器中

        
        // 面板p_3的属性
        JPanel p_3=new JPanel();// 创建面板
        p_3.setLayout(new FlowLayout());// p_3建立布局,流布局,需要在前面添加import java.awt.FlowLayout;
        // Border(边框),Factory(工厂),create(创造),Titled(标题)
        p_3.setBorder(BorderFactory.createTitledBorder("p_3"));// 面板p_3添加边框
        p_3.setBackground(Color.YELLOW);// 背景颜色

        // p_3里添加按钮
        for(int i_2=0;i_2<10;i_2++){
            p_3.add(new JButton("按钮"+i_2));
        }

        c.add(p_3);// 面板p_3放于容器中

        // 面板p_4的属性
        JPanel p_4=new JPanel();// 创建面板
        // Border(边框),Factory(工厂),create(创造),Titled(标题)
        p_4.setBorder(BorderFactory.createTitledBorder("p_4"));// 面板p_4添加边框
        p_4.setBackground(Color.BLUE);// 背景颜色
        p_4.setLayout(null);// 绝对布局
        JButton b_4=new JButton("按钮p_4");// 创建按钮
        // 左上角为(0,0)坐标
        b_4.setBounds(20,40,300,200);// 坐标,尺寸
        p_4.add(b_4);

        c.add(p_4);// 面板p_4放于容器中
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从码农到码到成功

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值