容器布局

1、绝对布局

复制代码
public class Demo extends JFrame {
    public Demo(){
        setBounds(100,100,300,300);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setVisible(true);
        Container c=getContentPane();
        c.setLayout(null);//容器布局设为绝对布局
        JButton b1=new JButton("按钮1"),b2=new JButton("按钮2");
        b1.setBounds(10,10,100,40);
        b2.setBounds(10,100,100,40);
        c.add(b1);
        c.add(b2);
    }
    public static void main(String[] args){
        new Demo();
    }
}
复制代码

 2、流布局FlowLayout,默认居中对齐。控件随窗口大小流动排列

复制代码
public class Demo extends JFrame {
    public Demo() {
        setBounds(100, 100, 300, 200);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container c = getContentPane();
        c.setLayout(new FlowLayout());//容器布局设为流布局
//        c.setLayout(new FlowLayout(FlowLayout.LEFT));//左对齐
//        c.setLayout(new FlowLayout(FlowLayout.LEFT,20,20));//左对齐,控件间距20
        for (int i = 0; i < 6; i++) {
            c.add(new JButton("按钮" + i));
        }
        setVisible(true);
    }

    public static void main(String[] args) {
        new Demo();
    }
}
复制代码

3、边界布局BorderLayout,容器被划分为中、东、西、南、北五个区域,默认添加在中部区域。 同一区域内新控件会覆盖旧控件。

复制代码
public class Demo extends JFrame {
    public Demo() {
        setBounds(100, 100, 300, 200);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container c = getContentPane();
        c.setLayout(new BorderLayout());//容器布局设为边界布局
        JButton b1 = new JButton("中");
        JButton b2 = new JButton("东");
        JButton b3 = new JButton("西");
        JButton b4 = new JButton("南");
        JButton b5 = new JButton("北");
        c.add(b1);
        c.add(b2, BorderLayout.EAST);
        c.add(b3, BorderLayout.WEST);
        c.add(b4, BorderLayout.SOUTH);
        c.add(b5, BorderLayout.NORTH);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Demo();
    }
}
复制代码

 4、网格布局GridLayout,当控件过多或过少时,自动调整布局,行数不变,列数变。

复制代码
public class Demo extends JFrame {
    public Demo() {
        setBounds(100, 100, 300, 200);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container c = getContentPane();
        c.setLayout(new GridLayout(2,4,10,10));//网格布局,2*4,间距10
        for(int i=0;i<6;i++){//6个按钮,填不满8个位置。自动调整布局为2*3,行数不变,列数变。
            c.add(new JButton("按钮"+i));
        }
        setVisible(true);
    }

    public static void main(String[] args) {
        new Demo();
    }
}
复制代码

 

posted @   夕西行  阅读(522)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示