面向对象
GUI(图形用户界面)
GUI:Graphical User Interface(图形用户接口)。
用图形的方式,来显示计算机操作的界面,这样更方便更直观。
CLI:Command line User Interface (命令行用户接口)
举例:就是常见的Dos命令行操作。需要记忆一些常用的命令,操作不直观。
比如:创建文件夹,或者删除文件夹等
Java为GUI提供的对象都存在Java.Awt和Javax.Swing两个包中。
GUI(Awt和Swing)
Awt与 Swing
Java.Awt:Abstract Window ToolKit (抽象窗口工具包)。
需要调用本地系统方法实现功能,属于重量级控件。
Javax.Swing:在AWT的基础上,建立的一套图形界面系统。
其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。
继承关系
Component
|--Button(按钮)
|--Label(标签)
|--Checkbox(复选框)
|--TextComponent(文本框)
|--TextArea(单行文本框)
|--TextField(多行文本框)
|--Container(容器,特殊组件,可通过add方法添加其他组件)
|--Panel(画板)
|--Window(窗口)
|--Frame(窗体)
|--Dialog(对话框)
|--FileDialog(文件对话框)
布局管理器
容器中的组件的排放方式,就是布局。
常见的布局管理器:
FlowLayout(流式布局管理器)
从左到右的顺序排列。(中左右)
Panel默认的布局管理器。
BorderLayout(边界布局管理器)
东,南,西,北,中。
Frame默认的布局管理器。
GridLayout(网格布局管理器)
规则的矩阵。
CardLayout(卡片布局管理器)
选项卡。
GridBagLayout(网格包布局管理器)
非规则的矩阵。
(图形化布局基本设计)
类 Component
void
setLocation(int x, int y)
将组件移到新位置。
void
setSize(int width, int height)
调整组件的大小,使其宽度为width
,高度为height
。
void
setVisible(boolean b)
根据参数b
的值显示或隐藏此组件。类 Container
Component
add(Component comp)
将指定组件追加到此容器的尾部。类 Frame
构造方法摘要 Frame()
构造一个最初不可见的Frame
新实例()。Frame(String title)
构造一个新的、最初不可见的、具有指定标题的Frame
对象。
类 Button
构造方法摘要 Button()
构造一个标签字符串为空的按钮。Button(String label)
构造一个带指定标签的按钮。类 FlowLayout
构造方法摘要 FlowLayout()
构造一个新的FlowLayout
,它是居中对齐的,默认的水平和垂直间隙是 5 个单位。
import java.awt.Frame;
import java.awt.Button;
import java.awt.FlowLayout;
/*
创建图形化界面:
1.创建frame窗体。
2.对窗体进行基本设置。
比如大小,位置,布局。
3.定义组件。
4.将组件通过窗体的add方法添加到窗体中。
5.让窗体显示。
*/
public class Test{
public static void main(String...args){
Frame f =new Frame("我的电脑");
f.setSize(1025,550);
f.setLocation(0,100);
f.setLayout(new FlowLayout());
Button b = new Button("360安全卫士");
f.add(b);
f.setVisible(true);
System.out.println("Hello 新长城");
}
}
(事件监听机制)
事件监听机制的特点:
1,事件源。
2,事件。
3,监听器。
4,事件处理。
事件源:就是Awt包或者Swing包中的那些图形界面组件。
(自定义事件事件处理方式)事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
以上三者,在Java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。
import java.awt.Frame;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
类 Window
void
addWindowListener(WindowListener l)
添加指定的窗口侦听器,以从此窗口接收窗口事件。接口 WindowListener 类 WindowAdapter
void
windowActivated(WindowEvent e)
将 Window 设置为活动 Window 时调用。void
windowClosed(WindowEvent e)
因对窗口调用 dispose 而将其关闭时调用。void
windowClosing(WindowEvent e)
用户试图从窗口的系统菜单中关闭窗口时调用。void
windowDeactivated(WindowEvent e)
当 Window 不再是活动 Window 时调用。void
windowDeiconified(WindowEvent e)
窗口从最小化状态变为正常状态时调用。void
windowIconified(WindowEvent e)
窗口从正常状态变为最小化状态时调用。void
windowOpened(WindowEvent e)
窗口首次变为可见时调用。类 WindowEvent
public class Test{
public static void main(String...args){
Frame f =new Frame("我的电脑");
f.setSize(1025,550);
f.setLocation(0,100);
f.setLayout(new FlowLayout());
Button b =new Button("360安全卫士");
f.add(b);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.out.println("我要退出了");
System.out.println(e.toString());
System.exit(0);
}
public void windowActivated(WindowEvent e){
System.out.println("激活");
}
public void windowOpened(WindowEvent e){
System.out.println("打开");
}
});
f.setVisible(true);
System.out.println("Hello 新长城");
}
}
/*
WinodwListener接口
abstract class WindowAdapter implements WindowListener{
void windowActivated(WindowEvent e){}
void windowClosed(WindowEvent e){}
void windowClosing(WindowEvent e){}
void windowDeactivated(WindowEvent e){}
void windowDeiconified(WindowEvent e){}
void windowIconified(WindowEvent e){}
void windowOpened(WindowEvent e){}
}
*/
/*
class MyWin implements WindowListener{
覆盖7个方法。可以我只用到了关闭的动作。
其他动作都没有用到,可是却必须复写。
}
*/
/*因为WindowListener的子类WindowAdapter已经实现了WindowListener接口。
并覆盖了其中的所有方法。那么我只要继承自Windowadapter覆盖我需要的方法即可。*/
/*
class MyWin extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.out.println("window closing---"+e.toString());
System.exit(0);
}
}
*/
化难为易:
(1)、确定事件源(容器或组件)
(2)、通过事件源对象的addxxxListener()方法将监听器注册到该事件源上。
(3)、该方法中接收XXXListener对象,或者XXXListener的子类XXXAdapter对象。