Java程序设计:Java Swing常用布局管理器

目录

1 实验名称

2 实验目的

3 实验源代码

4 实验运行结果图

5 总结


1 实验名称

       Java Swing常用布局管理器

2 实验目的

       继续熟练掌握在IDEA中调试代码

       掌握Java Swing中常用布局管理器的使用

       继续掌握组件和容器的概念

3 实验源代码

JTabbedPaneApplication.java:

public class JTabbedPaneApplication {
    public static void main(String[] args) {
        MyJFrame myJFrame = new MyJFrame();
        myJFrame.init();
    }
}

MyJFrame.java:

public class MyJFrame extends JFrame {
    private JTabbedPane jTabbedPane = null;//定义选项卡容器
    public void init(){
        setTitle("选项卡窗口");
        setBounds(200,200,300,400);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        jTabbedPane = new JTabbedPane(JTabbedPane.LEFT);//左侧选项卡
        jTabbedPane.add("FlowLayout",new FlowLayoutPanel());
        jTabbedPane.add("GridLayout",new GridLayoutPanel());
        jTabbedPane.add("BorderLayout",new BorderLayoutPanel());
        jTabbedPane.validate();
        //向窗口中添加选项卡容器
        this.add(jTabbedPane, BorderLayout.CENTER);
        this.validate();
    }
}

FlowLayoutPanel.java:

public class FlowLayoutPanel extends JPanel {
    FlowLayoutPanel(){
        add(new JLabel("FlowLayoutPanel"));
        add(new JButton("OK"));
        add(new JScrollPane(new JTextArea(10,10)));
    }
}

GridLayoutPanel.java:

public class GridLayoutPanel extends JPanel {
    //表格布局管理器
    GridLayoutPanel() {
        GridLayout gridLayout = new GridLayout(12, 12);
        //设置面板使用以上 器
        this.setLayout(gridLayout);
        //创建一个标签对象的二维数组
       // Label[][] labels = new Label[12][12];//way1
          JLabel[][] labels = new JLabel[12][12];//way2
        //JLabel默认情况下是透明的,所以直接设置背景颜色无法显示
        //put into
        for (int i = 0; i < 12; i++) {//外 控制 行数
            for (int j = 0; j < 12; j++) {//内 控制列数
                labels[i][j] = new JLabel();//创建
                labels[i][j].setOpaque(true);//2way

                if((i+j)%2==0) {//求余 模 运算
                    //下表和为偶数的 黑
                    labels[i][j].setBackground(Color.BLACK);
                }else{
                    labels[i][j].setBackground(Color.WHITE);
                }
                add(labels[i][j]);//对象添加到面板中
            }
        }
       validate();
    }
}

BorderLayoutPanel.java:

public class BorderLayoutPanel extends JPanel {
    private JButton btnNorth;
    private JButton btnSouth;
    private JButton btnEast;
    private JButton btnWest;
    private JButton btnNCenter;
    BorderLayoutPanel(){
        this.setLayout(new BorderLayout());//设为边界布局管理器
        btnEast  = new JButton("east");
        btnWest  = new JButton("west");
        btnSouth  = new JButton("south");
        btnNorth  = new JButton("north");
        btnNCenter  = new JButton("center");

        this.add(btnEast,BorderLayout.EAST);
        this.add(btnWest,BorderLayout.WEST);
        this.add(btnNCenter,BorderLayout.CENTER);
        this.add(btnNorth,BorderLayout.NORTH);
        this.add(btnSouth,BorderLayout.SOUTH);
        validate();
    }
}

4 实验运行结果图

5 总结

       应用布局管理器都属于相对布局,各组件位置可随界面大小而相应改变,不变的只是其相对位置,布局管理器比较难以控制,一般只在界面大小需要改是才用,但即使这样,为了操作方便,也只是在大的模块下用布局管理器,在一些小的模块下还是用绝对布局。在一些没要求界面大小改变的窗口,一般采用绝对布局比较容易,但对于后期的修改来说比较麻烦。

       BorderLayout这种布局管理器分为东、南、西、北、中心五个方位。北和南的组件可以在水平方向上拉伸;而东和西的组件可以在垂直方向上拉伸;中心的组件可同时在水平和垂直方向上同时拉伸,从而填充所有剩余空间。在使用BorderLayout的时候,如果容器的大小发生变化,其变化规律为:组件的相对位置不变,大小发生变化。例如容器变高了,则North、South 区域不变,West、Center、East区域变高;如果容器变宽了,West、East区域不变,North、Center、South区域变宽。不一定所有的区域都有组件,如果四周区域(West、East、North、South区域)没有组件,则由Center区域去补充,但是如果 Center区域没有组件,则保持空白。BorderLayout是RootPaneContainer (JInternalFrame、JDialog、JFrame、JWindow)的默认布局管理器。  FlowLayout布局可以创建一个居中对齐的布局对象,使用add方法将组件顺序地添加到容器中,组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左到右排列,每一行中的组件都居中排列。若一个容器使用BorderLayout布局,那么容器的空间简单地划分为东、西、南、北、中5个区域。GirdLayout布局,其策略是把容器划分为若干行乘若干列的网格区域,组件进入容器的顺序将按照第一行第一个、第一行第二个等等排列。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

茜茜西西CeCe

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

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

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

打赏作者

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

抵扣说明:

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

余额充值