Java图形化界面编程-1-AWT、容器

本文介绍了在Java中使用AWT和Swing进行图形化界面编程的基本概念,强调了AWT的早期作用和Swing的增强特性。特别提到在JDK9环境下开发,重点讲解了AWT的继承体系、Container容器及其布局管理,以及如何使用组件创建和组织用户界面。
摘要由CSDN通过智能技术生成

java使用AWT和Swing相关的类可以完成图形化界面编程,其中AWT的全称是抽象窗口工具集(Abstract Window Toolkit),它是sun公司最早提供的GUI库,这个GUI库提供了一些基本功能,但这个GUI库的功能比较有限,所以后来sun公司又提供了Swing库。通过使用AWT和Swing提供的图形化界面组件库,java的图形化界面编程非常简单,程序只需要依次创建所需的图形组件,并以合适的方式将这些组件组织在一起,就可以开发出非常美观的用户界面。

本次讲解的java开发平台是jdk9,希望大家课后练习时也使用jdk9,因为不同版本的jdk提供的GUI库的效果略有不同。

二. AWT 编程

============================================================================

2.1 AWT简介


​ 当 JDK 1.0发布时, Sun 提供了 一套基本的GUI类库,这个GUI类库希望可以在所有平台下都能运行 , 这套基本类库被称为"抽象窗口工具集 CAbstract Window Toolkit )",它为Java应用程序提供了基本的图形组件 。 AWT是窗口框架,它从不同平台的窗口系统中抽取出共同组件 , 当程序运行时,将这些组件的创建和动作委托给程序所在的运行平台 。 简而言之 ,当使用 AWT 编写图形界面应用 时, 程序仅指定了界面组件的位置和行为,并未提供真正的实现,JVM调用操作系统本地的图形界面来创建和平台 一致的对等体 。

​ 使用AWT创建的图形界面应用和所在的运行平台有相同的界面风格 , 比如在 Windows 操作系统上,它就表现出 Windows 风格 ; 在 UNIX 操作系统上,它就表现出UNIX 风格 。 Sun 希望采用这种方式来实现 " Write Once, Run Anywhere " 的目标 。

2.2 AWT继承体系


所有和 AWT 编程相关的类都放在 java.awt 包以及它的子包中, AWT 编程中有两个基类 :Component和 MenuComponent。

  • Component:代表一个能以图形化方式显示出来,并可与用户交互的对象,例如 Button 代表一个按钮,TextField 代表 一个文本框等;

  • MenuComponent:则代表图形界面的菜单组件,包括 MenuBar (菜单条)、 Menultem (菜单项)等子类。

在这里插入图片描述

其中 Container 是一种特殊的 Component,它代表一种容器,可以盛装普通的 Component。

AWT中还有一个非常重要的接口叫LayoutManager ,如果一个容器中有多个组件,那么容器就需要使用LayoutManager来管理这些组件的布局方式。

在这里插入图片描述

2.3 Container容器


2.3.1 Container继承体系

在这里插入图片描述

  • ​ Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;

  • ​ Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局;

  • ​ ScrollPane 是 一个带滚动条的容器,它也不能独立存在,默认使用 BorderLayout 管理其内部组件布局;

2.3.2 常见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作为容器根类,提供了如下方法来访问容器中的组件

| 方法签名 | 方法功能 |

| — | — |

| Component add(Component comp) | 向容器中添加其他组件 (该组件既可以是普通组件,也可以 是容器) , 并返回被添加的组件 。 |

| Component getComponentAt(int x, int y): | 返回指定点的组件 。 |

| int getComponentCount(): | 返回该容器内组件的数量 。 |

| Component[] getComponents(): | 返回该容器内的所有组件 。 |

2.3.3 容器演示

2.3.3.1 Window

在这里插入图片描述


import java.awt.*;



public class FrameDemo {



    public static void main(String[] args) {

        //1.创建窗口对象

        Frame frame = new Frame("这是第一个窗口容器");



        //设置窗口的位置和大小



        frame.setBounds(100,100,500,300);



        //设置窗口可见

        frame.setVisible(true);

    }

}



2.3.3.2 Panel

在这里插入图片描述


//创建panal容器时首先应该创建一个window对象

//panal以及其他容器都不能独立存在,必须依附于window

//panal容器可以存放其他组件,同时自身也可以充当组件添加到其他容器中



public class PanelDemo {

    public static void main(String[] args) {

        //1.创建Frame容器对象

        Frame frame = new Frame("这里在测试Panel");

        //2.创建Panel容器对象

        Panel panel = new Panel();



        //3.往Panel容器中添加组件

        panel.add(new TextField("这是一个测试文本"));

        panel.add(new Button("这是一个测试按钮"));



        //4.把Panel添加到Frame中

        frame.add(panel);



        //5.设置Frame的位置和大小

        frame.setBounds(30,30,500,300);



# 最后总结我的面试经验

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

![](https://img-blog.csdnimg.cn/img_convert/bb9324a64bb9b63f17b496acf023983e.webp?x-oss-process=image/format,png)

BAT面试经验

**实战系列:Spring全家桶+Redis等**

![](https://img-blog.csdnimg.cn/img_convert/f86069340e501e6835df3efcfaf6c536.webp?x-oss-process=image/format,png)

**其他相关的电子书:源码+调优**

![](https://img-blog.csdnimg.cn/img_convert/cee4d3df886b2b6ba7ae3e8e15a4d066.webp?x-oss-process=image/format,png)

**面试真题:**

![](https://img-blog.csdnimg.cn/img_convert/7e06029a40bccf7296244247add3a1c5.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/ec486441ca3cd0086ec4808b91fda3fd.webp?x-oss-process=image/format,png)



AT面试经验

**实战系列:Spring全家桶+Redis等**

[外链图片转存中...(img-u7uPPez1-1714130098430)]

**其他相关的电子书:源码+调优**

[外链图片转存中...(img-42AHSIsE-1714130098431)]

**面试真题:**

[外链图片转存中...(img-wo7QcSyY-1714130098431)]

[外链图片转存中...(img-rsb9Cdgz-1714130098432)]



> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值