awt的container容器
首先学习一下Container容器的继承体系
Container的父类是Component类,Component类的父类是Object类 由于Container继承了Component,所以Component类有的方法,Container类也有
Container类有三个子类,分别是Window窗口容器、Panel内嵌容器、ScrollPane含滚动条的容器
Window窗口容器下面有两个类,分别是Frame创建窗口、Dialog创建对话框
Panel内嵌容器下面有一个类即Applet
1、Window是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局。即Window的默认管理器是BorderLayout 2、Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用、默认使用FlowLayout管理其内部组件布局。即Panel的默认管理器是FlowLayout 3、ScrollPane是一个带滚动条的容器,它也不能独立存在,默认使用BorderLayout管理其内部组件布局。即ScrollPane的默认管理器是BorderLayout
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() | 返回该容器内的所有组件 |
awt的window容器_练习
x
package ch29;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//window容器
public class a_2_1awt_window容器_测试 {
public static void main(String[] args) {
//1、创建窗口对象
Frame frame = new Frame("测试window窗口");//这个Frame就是window容器
//2、指定窗口的位置、大小,单位是像素
frame.setLocation(100,100);
frame.setSize(500,300);
//给Frame设置WindowListener监听器,监听用户点击右上角X的动作,则关闭窗口
frame.addWindowListener(new WindowAdapter() {
//采用Java通过的适配器设计模式,我们只需要重写自己需要的方法,例如windowClosing方法,如下
public void windowClosing(WindowEvent e) {
System.exit(0);//原理:退出JVM虚拟机,即退出当前运行的Java程序
}
});
//3、设置窗口对象可见
frame.setVisible(true);
//运行代码打开的窗口关不掉怎么办:在run界面点击左边红色小方框即可停止运行并关闭窗口
}
}
awt的Panel容器_练习
xxxxxxxxxx
package ch29;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//Panel容器
public class a_2_2awt_Panel容器_测试 {
public static void main(String[] args) {
//1、就创建一个window对象,注意在创建Panel以及其他容器对象之前必须先创建一个window对象
Frame frame = new Frame("测试Panel容器");
//2、创建一个Panel容器对象
Panel p = new Panel();
//3、创建一个文本框和按钮,放到Panel容器里面
p.add(new TextField("测试文本"));//new一个主键
p.add(new Button("测试按钮"));//new一个主键
//4、把Panel放到window对象里面
frame.add(p);
//设置window对象的位置(x和y轴)和大小(长宽)
frame.setBounds(100,100,500,300);
//设置window为可见
frame.setVisible(true);
//给Frame设置WindowListener监听器,监听用户点击右上角X的动作,则关闭窗口
frame.addWindowListener(new WindowAdapter() {
//采用Java通过的适配器设计模式,我们只需要重写自己需要的方法,例如windowClosing方法,如下
public void windowClosing(WindowEvent e) {
System.exit(0);//原理:退出JVM虚拟机,即退出当前运行的Java程序
}
});
//为什么按钮里面的文字出现乱码:idea编码是UTF-8,生成的按钮是由当前win11操作系统创建的,而当前系统的默认编码是中文GBK编码,不一致就会出现乱码
//解决:让编码和解码一致
//具体解决:在idea软件的上方中间靠右一些有一个绿色锤子图标,点击锤子图标右边的输入框,点击下拉的Edit Configurations...,点击弹出来的
//选项卡的Modify options绿色字体,找到Add VM options并勾选,将'-Dfile.encoding=gbk'输入到刚才Modify options蓝色字体的
//下方的三条输入框中的最上面那条输入框里面
}
}
awt的ScrollPane容器_练习
xxxxxxxxxx
package ch29;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//滚动条容器ScrollPane
public class a_2_3awt_ScrollPane容器_测试 {
public static void main(String[] args) {
Frame frame = new Frame("测试ScrollPane容器");
//创建ScrollPane容器的对象
//ScrollPane sp = new ScrollPane();//当内容足够多才会出现滚动条
ScrollPane sp = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);//内容多少都会出现滚动条
//往ScrollPane中添加内容
sp.add(new TextField("测试_文本框"));//文本组件
sp.add(new Button("测试_按钮"));//按钮组件
//最后把ScrollPane作为一个组件添加到window中(也就是添加到Frame中)
frame.add(sp);
//给Frame设置WindowListener监听器,监听用户点击右上角X的动作,则关闭窗口
frame.addWindowListener(new WindowAdapter() {
//采用Java通过的适配器设计模式,我们只需要重写自己需要的方法,例如windowClosing方法,如下
public void windowClosing(WindowEvent e) {
System.exit(0);//原理:退出JVM虚拟机,即退出当前运行的Java程序
}
});
frame.setBounds(100,100,500,300);
frame.setVisible(true);
//为什么按钮里面的文字出现乱码:idea编码是UTF-8,生成的按钮是由当前win11操作系统创建的,而当前系统的默认编码是中文GBK编码,不一致就会出现乱码
//解决:让编码和解码一致
//具体解决:在idea软件的上方中间靠右一些有一个绿色锤子图标,点击锤子图标右边的输入框,点击下拉的Edit Configurations...,点击弹出来的
//选项卡的Modify options绿色字体,找到Add VM options并勾选,将'-Dfile.encoding=gbk'输入到刚才Modify options蓝色字体的
//下方的三条输入框中的最上面那条输入框里面
//为什么不显示17行写的文本组件:布局管理器造成的,下节课的学习会有解决方法
}
}