AWT继承体系

1、AWT概述

AWT继承体系,one write,run anywhere.

Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;
Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局;
ScrollPane 是 一个带滚动条的容器,它也不能独立存在,默认使用 BorderLayout 管理其内部组件布局;
常见API
Component作为基类,提供了如下常用的方法来设置组件的大小、位置、可见性等。

方法签名                                                            方法功能
setLocation(int x, int y)                                    设置组件的位置。
setSize(int width, int height)                            设置组件的大小。
setBounds(int x, int y, int width, int height)      同时设置组件的位置、大小。
setVisible(Boolean b):                                     设置该组件的可见性。
Container                                                        作为容器根类,提供了如下方法来访问容器中的组件

package com.one.container;

import java.awt.*;

public class WindowDemo {
    public static void main(String[] args) {
//        1、创建一个窗口对象
        Frame frame=new Frame("我创建的第一个窗口");
//      2、指定窗口的位置、大小
//        设置组件位置
        frame.setLocation(100,100);
//        设置组件大小
        frame.setSize(500,300);
//      3、设置窗口对象可见
        frame.setVisible(true);
    }
}

方法签名                                                            方法功能
Component add(Component comp)            向容器中添加其他组件 (该组件既可以是普通组件,也可以 是容器) , 并返回被添加的组件 。
Component getComponentAt(int x, int y):    返回指定点的组件 。
int getComponentCount():                            返回该容器内组件的数量 。
Component[] getComponents():                    返回该容器内的所有组件 。

å¨è¿éæå¥å¾çæè¿°

Java语言常见的包

2、布局容器

布局管理器

设置最佳大小,frame.pack();

3、BorderLayout 边框布局(东西南北中)

注意:如果不往某个区域放入组件,那么该区域不会空白出来,而是被其他区域占用

解决办法:将组件放入panel容器中,就可以看到所有的组件了。

package com.one.layout;

import java.awt.*;

public class BorderLayoutDemo2 {
    public static void main(String[] args) {
        Frame frame = new Frame("BorderLayout布局管理器测试");
//        指定frame的布局容器为BorderLayout
        frame.setLayout(new BorderLayout(100,50));

//       往frame添加按钮组件
        frame.add(new Button("北侧按钮"),BorderLayout.NORTH);



        frame.add(new Button("南侧按钮"),BorderLayout.SOUTH);
//        frame.add(new Button("中部按钮"),BorderLayout.CENTER);
//
//        frame.add(new TextField("文本默认居中显示"));

        Panel p = new Panel();
        p.add(new TextField("文本测试"));
        p.add(new Button("中部按钮"),BorderLayout.CENTER);

        frame.add(p);
//       设置frame为最佳大小
        frame.pack();
        frame.setVisible(true);






    }
}

4、GridLayout网格布局

                

 5、GridBagLayout

比GridLayout强大,但是比较复杂

6、CardLayout  卡片布局管理容器

package com.one.layout;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CardLayoutDemo {
    public static void main(String[] args) {
        Frame frame = new Frame();
//       1、创建cardLayout对象
        CardLayout cardLayout = new CardLayout();
        Panel p1 = new Panel();
        p1.setLayout(cardLayout);
//        2、往panel中存储多个组件
        String [] names={"第一张","第二张","第三张","第四张","第五张"};
        for(int i=0;i< names.length;i++){
            p1.add(names[i],new Button(names[i]));
        }
       /* p1.add("第一张",new Button("第一张"));
        p1.add("第2张",new Button("第2张"));*/
//      3、把panel放到frame中间区域
        frame.add(p1);

//        4、创建panel对象,p2用来存储多个按钮组件
        Panel p2 = new Panel();
//        5、创建5个按钮组件
        Button b1 = new Button("上一张");
        Button b2 = new Button("下一张");
        Button b3 = new Button("第一张");
        Button b4 = new Button("最后一张");
        Button b5 = new Button("第三张");
//      创建一个事件监听器,监听按钮的点击动作
        ActionListener listener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String actionCommand = e.getActionCommand();
                switch(actionCommand){
                    case "上一张":
                        cardLayout.previous(p1);
                        break;
                    case "下一张":
                        cardLayout.next(p1);
                        break;
                    case "第一张":
                        cardLayout.first(p1);
                        break;
                    case "最后一张":
                        cardLayout.last(p1);
                        break;
                    case "第三张":
                        cardLayout.show(p1,"第三张");
                        break;
                }
            }
        };
//      把当前这个时间监听器和多个按钮绑定在一起
        b1.addActionListener(listener);
        b2.addActionListener(listener);
        b3.addActionListener(listener);
        b4.addActionListener(listener);
        b5.addActionListener(listener);
//        把按钮添加到容器p2中
        p2.add(b1);
        p2.add(b2);
        p2.add(b3);
        p2.add(b4);
        p2.add(b5);
//        把panel放到frame南侧区域
        frame.add(p2,BorderLayout.SOUTH);


        frame.pack();;
        frame.setVisible(true);

    }
}

7、BoxLayout

Swing引入的一个新的布局容器

package com.one.layout;

import javax.swing.*;
import java.awt.*;

public class BoxLayoutDemo03 {
    public static void main(String[] args) {
        Frame frame = new Frame();
//         1、创建Box水平容器
        Box hb = Box.createHorizontalBox();
//        2、给水平布局容器添加按钮组件
        hb.add(new Button("水平按钮1"));
//        设置水平按钮 固定 间距
        hb.add(Box.createHorizontalGlue());
        hb.add(new Button("水平按钮2"));
        hb.add(Box.createHorizontalStrut(30));
        hb.add(new Button("水平按钮3"));

        Box vb = Box.createVerticalBox();
        vb.add(new Button("垂直按钮1"));
        vb.add(Box.createVerticalGlue());
        vb.add(new Button("垂直按钮2"));
        vb.add(Box.createVerticalStrut(30));
        vb.add(new Button("垂直按钮3"));

        frame.add(hb,BorderLayout.NORTH);

        frame.add(vb);
        frame.pack();
        frame.setVisible(true);


    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值