——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
###19.01_GUI(如何创建一个窗口并显示)
GUI 是 Graphical User Interface 的缩写,即「图形使用者接口」。在传统的操作系统 MS-DOS 文字模式下,屏幕上显示的是单调的文字接口,使用者必须透过键盘输入指令,才能操作计算机。麻烦的是如果你的英文不好,光是背指令,就够让你头痛了。
所幸, Windows 95 以后的版本中,GUI 的操作环境以图形及窗口方式显示,使用者只要用鼠标进行操作,英文再怎么不行,照样可以看图标找到需要的指令来进行操作。所以 GUI 接口的亲和性设计,可说是操作系统设计上的一大突破
对于GUI的结构我们做一个简单的表示:
Component: 它代表的是界面上 显示的所有的组件,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条
* |- Button 按钮
* |- Canvas 画布
* |- Checkbox 复选框
* |- Label 标签,用来在页面显示文本信息,不能够编辑
* |- List 可滚动的列表
* |- Scrollbar 滚动条
* |- JComponent
|- JTable 表格
* |- TextComponent
* |- TextField 单行文本框
* |- TextArea 多行文本框(文本域)
* |- Container 容器
* |- Window 窗口
* |- Frame 窗体
* |- Dialog 对话框
* |- FileDialog 文件对话框
* |- Panel 面板
<span style="font-size:14px;">public class FrameDemo {
public static void main(String[] args) {
//创建窗体对象
//设置标题
Frame frame = new Frame("适配器设计模式");
//设置尺寸大小
frame.setSize(500, 500);
//设置位置
frame.setLocation(400, 100);
//添加事件监听
//WindowAdapter接收窗口事件的抽象适配器类
frame.addWindowListener(new WindowAdapter() {
//关闭窗口
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//显示窗体
frame.setVisible(true);
}
}</span>
* Graphical User Interface(图形用户接口)。
* Frame f = new Frame(“my window”);
f.setLayout(new FlowLayout());//设置布局管理器
f.setSize(500,400);//设置窗体大小
f.setLocation(300,200);//设置窗体出现在屏幕的位置
f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png"));
f.setVisible(true);
<span style="font-size:14px;">public class FrameDemo {
public static void main(String[] args) {
//创建窗体
//事件源: 窗体, 银行
Frame frame = new Frame();
//设置标题
frame.setTitle("人来银行");
//设置尺寸大小
frame.setSize(500, 500);
//设置位置
frame.setLocation(400, 100);
//事件监听: 窗口监听器 摄像头,保安
//public synchronized void addWindowListener(WindowListener l)
//new MyWindowListener();//创建一个保安
//创建一个保安,来监听银行要发生的事件
frame.addWindowListener(new MyWindowListener());
//显示
frame.setVisible(true);
}
}
</span>
首先了解一下Frame:
Frame 是带有标题和边框的顶层窗口
* 构造方法:
* public Frame() 构造一个最初不可见的 Frame 新实例()。Frame 的标题为空。
*
* 方法:
* public void show() 方法 显示窗口, 过时了
* public void setVisible(boolean b)根据参数 b 的值显示或隐藏此组件。
* public void setTitle(String title) 设置标题
*
* public void setSize(int width, int height) 设置窗口大小
* public void setSize(Dimension d) 设置窗口大小,传一个尺寸对象
* //Dimension 类封装单个对象中组件的宽度和高度
*
* public void setLocation(int x, int y) 设置窗口位置
* public void setLocation(Point p)设置窗口位置,传一个坐标点对象
<span style="font-size:14px;">public class FrameDemo {
public static void main(String[] args) {
//创建一个窗口
Frame f = new Frame();
//设置一个标题
f.setTitle("给我一个标题");
//设置窗口位置
f.setLocation(500, 250);//单位: 像素
//设置窗口大小
f.setSize(300, 200);
//显示窗口
//f.show();
f.setVisible(true);
}
}</span>
###19.02_GUI(布局管理器)
* FlowLayout(流式布局管理器)
* 从左到右的顺序排列。
* Panel默认的布局管理器。
* BorderLayout(边界布局管理器)
* 东,南,西,北,中
* Frame默认的布局管理器。
* GridLayout(网格布局管理器)
* 规则的矩阵
* CardLayout(卡片布局管理器)
* 选项卡
* GridBagLayout(网格包布局管理器)
* 非规则的矩阵
<span style="font-size:14px;">//创建窗体
JFrame frame = new JFrame("键盘监听");
//设置大小与位置
frame.setBounds(200, 200, 400, 200);
//设置窗口关闭
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出后关闭
//设置窗体的布局方式
frame.setLayout(null);//帧布局
//-----------------------------------------------
//创建一个标签
Label label = new Label("请输入QQ号码");
label.setBounds(150, 30, 100, 30);
frame.add(label);</span>
###19.03_GUI(窗体监听)
Frame f = new Frame("我的窗体");
//事件源是窗体,把监听器注册到事件源上
//事件对象传递给监听器
<span style="font-size:14px;"> f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//退出虚拟机,关闭窗口
System.exit(0);
}
});</span>
###19.04_GUI(鼠标监听)
<span style="font-size:14px;"><span style="color:#000000;"> //蓝色按钮,添加鼠标监听
blueButton.addMouseListener(new MouseAdapter() {
//进入按钮范围
@Override
public void mouseEntered(MouseEvent e) {
//设置背景色颜色为 蓝色
frame.setBackground(Color.BLUE);
}
//退出按钮范围
@Override
public void mouseExited(MouseEvent e) {
//设置背景色颜色为白色
frame.setBackground(Color.WHITE);
}
});
</span> </span>
###19.05_GUI(键盘监听和键盘事件)
键盘监听:
* 事件监听主要是针对awt包下的组件使用
* 在对swing包下的组件使用的时候,可能会产生问题
<span style="font-size:14px;"> //创建一个文本框
//JTextField field = new JTextField(40);
TextField field = new TextField(40);
field.setBounds(150, 80, 100, 30);
frame.add(field);
//----------------------------------------------
//为文本框 添加 键盘监听
field.addKeyListener(new KeyAdapter() {
//按键按下时激活
@Override
public void keyPressed(KeyEvent e) {
//int code = e.getKeyCode();
char ch = e.getKeyChar();
//判断当前按下的按键是否是数字
//if (code >= 48 && code <= 57) {
//是数字: 在文本框中显示
//} else {
//否数字: 阻止 当前按键对应的字符,在文本框中显示
// e.consume();
//}
</span>
###19.06_设计模式(适配器设计模式)
* a.什么是适配器
* 在使用监听器的时候, 需要定义一个类事件监听器接口.
* 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐.
* 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可.
* b.适配器原理
* 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.
* 目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了.
<span style="font-size:14px;">/*
* 通过适配器设计模式来完成窗口关闭
*/
public class FrameDemo {
public static void main(String[] args) {
//创建窗体对象
//设置标题
Frame frame = new Frame("适配器设计模式");
//设置尺寸大小
frame.setSize(500, 500);
//设置位置
frame.setLocation(400, 100);
//添加事件监听
//WindowAdapter接收窗口事件的抽象适配器类
frame.addWindowListener(new WindowAdapter() {
//关闭窗口
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//显示窗体
frame.setVisible(true);
}
}</span>
###19.07_GUI(需要知道的)
* 事件处理
* 事件: 用户的一个操作
* 事件源: 被操作的组件
* 监听器: 一个自定义类的对象, 实现了监听器接口, 包含事件处理方法,把监听器添加在事件源上, 当事件发生的时候虚拟机就会自动调用监听器中的事件处理方法