二、AWT 核心类继承体系
AWT 核心类继承体系 : AWT 中最终要的两个类是 Component 组件类 和 MenuComponent 菜单组件类 ;
- Component 组件类 : 可交互的组件对象 , 如 : Button 按钮 , TextField 文本框等 ;
- Container 组件 : Component 组件类 的子类 , 是一种 特殊的容器组件 , 可以容纳普通的 Component 组件 ;
- MenuComponent 菜单组件类 : 菜单组件 , 如 : MenuBar 菜单条 , MenuItem 菜单组件 ;
LayoutManager 布局管理器 : AWT 中的 LayoutManager 布局管理器 也是重要的 接口 , 实现如 : GridLayout , FlowLayout 等 , 用于 管理多个组件的布局排列 ;
在 AWT 中使用 Component 组件类 和 MenuComponent 菜单组件类 展示基本的界面效果 ,
如果有多个组件关联性很强则需要使用 Container 组件 对这些组件进行封装 ,
封装后使用 LayoutManager 布局管理器 排列其中封装的组件 ;
三、Container 容器类子类
Container 容器类 , 继承自 Component 组件类 , 因此 Component 中的成员 属性与方法 , 在 Container 中也可以使用 ;
public class Container extends Component
Container 容器类 又有如下几个子类 : 这些容器类子类也都是容器 , 都有一个 默认的 布局管理器 ;
- Window 窗口容器 : 该类有如下 2 个子类 , Frame 和 Dialog , 默认的 布局管理器 是 BorderLayout ;
- Frame 是窗口类 ;
- Dialog 是对话框类 ;
- Panel 内嵌容器 : 该类有一个子类 Applet 类 , 默认的 布局管理器 是 FlowLayout ;
- ScrollPanel 可滚动容器 : 默认的 布局管理器 是 BorderLayout ;
四、Container 容器常用 API
Container 容器类 是 Component 组件类 的子类 , 因此 Container 中也可以调用 Component 中的函数 , 这里首先介绍 Component 组件类 的 常用 API , 然后再介绍 Container 容器类的 API ;
Component 组件类 常用 API :
- setLocation(int x, int y) : 设置 组件 在 屏幕中的位置 , 屏幕中默认的坐标体系 , 左上角为原点 , 向右为 x 轴 , 向下为 y 轴 , 与 Android 的屏幕坐标系 类似 ;
- setSize(int width, int height) : 设置 组件 大小 , 单位是像素值 ;
- setBounds(int x, int y, int width, int height) : 同时设置 组件 在屏幕中的位置 和 组件 像素大小 ;
- setVisible(boolean b) : 设置组件是否可见 , true 可见 , false 不可见 ;
Container 容器类 常用 API :
- Component add(Component c) : 向 Container 容器 中 添加 Component 组件 实例对象 , 返回被添加的组件 ; 注意 Container 是 Component 的子类 , 因此 此处也可以添加 Container 容器 ;
- Component getComponentAt(int x, int y) : 返回指定 屏幕坐标 位置的组件 ;
- int getComponentCount() : 获取 Container 容器 中的 Component 组件个数 ;
- Component[] getComponent() : 获取 Container 容器中的所有 Component 组件 ;
五、Frame 窗口示例
首先 , 创建 Frame 实例对象 , 该对象就是 操作系统中应用软件的 窗口 ;
// 1. 创建窗口
Frame frame = new Frame("AWT 图形界面编程");
Frame 是 Window 的子类 ,
public class Frame extends Window implements MenuContainer
Window 是 Container 的子类 ;
public class Window extends Container implements Accessible
然后 , 设置窗口的位置 , 这里调用 Component#setLocation 函数 设置窗口在屏幕中的位置 ;
// 2. 设置窗口位置
frame.setLocation(50, 50);
再后 , 设置窗口大小 , 这里调用 Component#setSize 函数 设置窗口的像素大小 ;
// 3. 设置窗口大小
frame.setSize(800, 500);
最后 , 设置窗口可见 , 窗口默认不可见 , 需要手动设置可见性 ;
// 4. 设置窗口可见
frame.setVisible(true);
完整代码示例 :
import java.awt.\*;
public class HelloAWT {
public static void main(String[] args) {
// 1. 创建窗口
Frame frame = new Frame("AWT 图形界面编程");
// 2. 设置窗口位置
frame.setLocation(50, 50);
// 3. 设置窗口大小
frame.setSize(800, 500);
// 4. 设置窗口可见
frame.setVisible(true);
}
}
执行结果 : 执行后会在屏幕的 ( 100, 100 ) 位置显示该窗口 ;
注意 : 此时窗口无法关闭 , 需要停止程序运行来关闭窗口 ;
六、Panel 示例
Panel 不能独立存在 , 需要依附于 Window 存在 , 因此这里需要先创建 Frame 窗口 , 然后再向其中添加 Panel ;
完整代码示例 :
import java.awt.\*;
public class HelloAWT {
public static void main(String[] args) {
// 创建窗口
Frame frame = new Frame("AWT 图形界面编程");
// 创建 Panel
Panel panel = new Panel();
// 创建 文本框
TextField textField = new TextField("测试文本框");
// 创建 按钮
Button button = new Button("测试按钮");
// 向 Panel 中添加文本框和按钮
panel.add(textField);
panel.add(button);
// 将 Panel 放到 Frame 中
frame.add(panel);
// 设置窗口位置
frame.setLocation(50, 50);
// 设置窗口大小
frame.setSize(800, 500);
// 设置窗口可见
frame.setVisible(true);
}
}
执行效果 :
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img-OCqKyFDe-1714257892809)]
[外链图片转存中…(img-CSbdT1Oi-1714257892809)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!