zoukankan      html  css  js  c++  java
  • AWT的应用

    AWT(Abstract Window TookIT)是java用于创建用户界面和绘制图形的所有类

    AWT组件和容器

    AWT包含了很多类和接口,用于java Application的GUI(图形用户界面)编程。GUI的各种元素,窗口、按钮、文本框、等由java的类来表示,使用AWT所涉及的类一般都在java.awt的包及其子包中,Container和Component是AWT两个核心类

    编写界面致命的缺点是:图形和操作系统有关,awt开发的界面在不同的操作系统上呈现的界面是不同的,所以后期开发使用swing比较多,但即使如此swing离不开AWT

    两种常用的Container

    1Windwo:其对象表示自由停泊的顶级窗口

    2.Panel其对象可以容纳其他Component对象,但不能独立存在,必须加到其他Container中

    Frame是Window子类,由Frame或其子类创建的对象为一个窗体

    创建一个窗口;

    package text4;
    import java.awt.color.*;
    import java.awt.Color;
    import java.awt.Frame;
    
    public class Hello{
        public static void main(String[] args) {
            //创建一个Frame对象
            Frame f=new Frame();
            //设置Frame的大小
            f.setSize(300, 200);
            //设置位置
            f.setLocation(20,30);
            //设置背景色
            f.setBackground(Color.YELLOW);
            //设置可见
            f.setVisible(true);
            
        }
        
    }
    View Code

    在java窗口编程一般在Panel中添加组件,再将Panel组件添加到Frame中,Panel对象可以看成是容纳Component的空间,可以拥有自己的布局

    在窗口中增加面板;

    package text4;
    import java.awt.color.*;
    import java.awt.Color;
    import java.awt.Frame;
    import java.awt.Panel;
    public class Hello{
        public static void main(String[] args) {
            //创建一个Frame对象
            Frame f=new Frame();
            //设置Frame的大小
            f.setSize(300, 200);
            //设置位置
            f.setLocation(20,30);
            //设置背景色
            f.setBackground(Color.RED);
            //创建一个Panel
            Panel panel1=new Panel(null);
            //创建panel的大小
            panel1.setSize(100,100);
            //设置背景色
    //        panel1.setBackground(Color.BLUE);
            //设置位置
            panel1.setLocation(100,50);
            //将panel放到Frame中
            f.add(panel1);
            //设置可见
            f.setVisible(true);
        }
        
    }
    View Code

    布局管理器

    是开发过程中,每设计一个窗体,都要向其中添加若干组件。随着组件的增多,排列起来就会杂乱无章,这时候就需要布局管理器,

    BorderLayout 

    BoxLayout

    FlowLayout

    GirdBagLayout

    GirdLayout

    CardLayout

    1.FlowLayout布局

    流失布局管理器可以让组件从左往右依次排列,排满一行就换一行,行高是由控制组件高度决定的。FlowLayout是所有的Panel类型容器默认布局,默认情况下是居中对齐,(FlowLayout.ENTER)

    使用流式布局(对齐)

    package text4;
    
    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    
    public class Hello {
        public static void main(String[] args) {
            // 居中
            layout("居中", FlowLayout.CENTER);
            // 开始边对齐
            layout("开始边对齐", FlowLayout.LEADING);
            // 向左
            layout("向左", FlowLayout.LEFT);
            // 向右
            layout("向右", FlowLayout.RIGHT);
            // 结束边对齐
            layout("结束边对齐", FlowLayout.TRAILING);
        }
    
        private static void layout(String title, int type) {
            // 创建一个title,标题为title
            Frame frame = new Frame(title);
            // 设置布局方式为FlowLayout
            frame.setLayout(new FlowLayout(type));
            // 设置窗口大小
            frame.setSize(400, 300);
            // 设置窗口位置
            frame.setLocation(20, 30);
            // 创建多个按钮
            Button btn1 = new Button("1");
            Button btn2 = new Button("2");
            Button btn3 = new Button("3");
            Button btn4 = new Button("4");
            // 添加按钮
            frame.add(btn1);
            frame.add(btn2);
            frame.add(btn3);
            frame.add(btn4);
            // 设置窗口可见
            frame.setVisible(true);
        }
    }
    View Code

     2.BorderLayout布局(东西南北中)

    package text5;
    
    import java.awt.BorderLayout;
    import java.awt.Button;
    import java.awt.Frame;
    
    public class Hello {
        public static void main(String[] args) {
            // 创建一个Frame,标题是BorderLayout布局
            Frame f = new Frame("BorderLayout 布局");
            // 设置Frame的大小
            f.setSize(400, 300);
            // 设置布局管理器
            f.setLayout(new BorderLayout());
            // 创建5个按钮
            Button[] b = new Button[5];
            b[0] = new Button("东");
            b[1] = new Button("西");
            b[2] = new Button("南");
            b[3] = new Button("北");
            b[4] = new Button("中");
            f.add(b[0], BorderLayout.EAST);
            f.add(b[1], BorderLayout.WEST);
            f.add(b[2], BorderLayout.SOUTH);
            f.add(b[3], BorderLayout.NORTH);
            f.add(b[4], BorderLayout.CENTER);
            //
            f.setVisible(true);
    
        }
    }
    View Code

    3.GridLayout布局,将控件按网络排列,基本布局策略是把容器的空间划分成若干行和若干列的区域(行列)

    package text5;
    
    import java.awt.GridLayout;
    import java.awt.Frame;
    import java.awt.Button;
    
    public class Hello2 {
        public static void main(String[] args) {
            // 创建一个Frame,标题是GridLayout
            Frame f = new Frame("GridLayout 布局");
            // 设置Frame的大小
            f.setSize(400, 300);
            // 设置布局管理器
            f.setLayout(new GridLayout(2, 3));// 两行三列
            // 添加按钮
            for (int i = 0; i < 6; i++) {
                Button btn = new Button(String.valueOf(i));// 将int转换成字符串
                f.add(btn);
            }
            f.setVisible(true);
        }
    }
    View Code

    4.卡片式布局CardLayout(有点小复杂)

  • 相关阅读:
    学习另外一门技术,叫Python
    子报表显示Total Page Count或Page Number
    Insus.NET是Leo Yeung的网名
    C# 以管理员身份运行WinForm程序
    python 里 certifi 库的作用
    CEF中文教程(google chrome浏览器控件) -- CEF简介CEF中文教程(google chrome浏览器控件) -- CEF简介
    CefInitialize崩溃 && Cef白屏
    Chrome设置
    CEF 开启webGl功能
    Qt5.9.1结合CEF开发基于chorm的浏览器(二)
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10688537.html
Copyright © 2011-2022 走看看