-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
GraphicalUserInterface(图形用户接口)。
用图形的方式,来显示计算机操作的界面,这样更方便更直观。
Java为GUI提供的对象都存在java.awt和javax.swing两个包中。
java.awt:
1,AbstractWindow TookKit (抽象窗口工具包)
2,早期存在的
3,它内部的类,需要调用本地接口(需要调用操作系统的本地函数)
4,属于重量级的包
5,因为它需要调用本地系统的资源,所以awt包下的组件不是跨平台的
java.swing:
1.在awt包的基础上建立起来的;它底层有很多组件会使用awt包下的组件;
2.它的组件是纯Java编写的
3.属于"轻量级"的包;
4.由于是纯Java编写,所以是"跨平台"的
体系图:
Component(抽象类):所有非"菜单"组件的超类。
|--组件:
|--Button:按钮
|--Label:标签
|--CheckBox(复选框)
|--TextComponent
|--TextArea(文本域)
|--TextField(文本框)
|--容器:可以装其他组件的组件
|--Container
|--Window(窗口):没有边框和菜单窗口
|--Frame(窗口):有标题栏和边框的窗口
|--Dialog(对话框)
|--Panel(面板)
HelloWorld窗体案例:
步骤:
1,实例化一个窗体:Frame
构造方法:
Frame():构造一个最初不可见的 Frame 新实例()。
Frame(String title):构造一个新的、最初不可见的、具有指定标题的 Frame对象。
2,设置窗体:
1),位置:
voidsetLocation(int x,int y);
void setLoction(Point p);(将上面的x,y封装成一个Point对象,效果是一样的)
2),窗体大小:
voidsetSize(int width,int height);
void setDimension(Dimension d)();(将上面的width,height封装成一个Dimension对象,效果是一样的)
3)窗体标题;
void setTitle(String title)
一次性设置窗体的大小和位置:
void setBounds(int x,int y,int width,int height)
void setBounds(Rectangle r) (Rectangle类中封装大小和位置)
4),设置窗体布局:
setLayout(LayoutManager mgr)设置此容器的布局管理器。
3设置窗体可见:
public voidsetVisible(boolean b)
事件处理机制:
1,事件源:可能发生事件的组件:
窗体:Frame
2,可能发生什么事?
1),一些组件可能会发生的事,都是已经定义好的。
2),将已经定义好的这些事件进行分类,都分别定义在某些XxxxListener
例如:窗口的关闭事件:
选择;WindowListener(接口):
窗口关闭事件:
void WindowClosing(WindowEvent e)
3,当事件发生时,我们要做什么?
1),自定义一个类,实现我们要关注的事件接口
2),重写我们希望处理的方法:
例如:
编写类,实现WindowListener接口
重写WindowClosing()方法
4,将事件源与事件的处理方式进行关联:
1),一般调用组件的addXxxListener();
例如:事件源:Frame
事件:WindowListener:
那么就调用Frame的addWindowListener(new事件处理的类()) 这个可以用匿名类部类的形式写
适配器模式:
有些接口中有很多的方法,例如IA
我们子类只需要一部分方法,此时去实现IA接口,那么不得不去实现接口中的所有抽象方法。
这样,其他不需要的方法就会造成代码的可读性降低,例如SubA1类。
这时可以定义一个抽象类,它实现IA接口,并全部重写IA的抽象方法,我们子类去继承抽象类,去重写你想要的抽象类的方法。
适配器优化窗体事件处理方式:具体代码:
f.addWindowListener(new WindowAdapter() {
@Override
publicvoid windowClosing(WindowEvent e) {
System.exit(0);
}
});
按钮:Button(类)
构造方法:
Button()
构造一个标签字符串为空的按钮。
Button(String label)
构造一个带指定标签的按钮。
将按钮组件添加到窗口组件:
add.(Componnet com);
为按钮添加事件:
bu.addActionListener(newActionListener() {
@Override
publicvoid actionPerformed(ActionEvent e) {
System.out.println("你再点试试");
}
});
布局管理器:
BorderLayout (边框布局管理器)例如:Eclipse的主界面,Frame的默认布局管理器
CardLayout(卡片布局管理器)例如:播放幻灯片时
FlowLayout(流式布局管理器)例如:菜单栏
GridLayout(方格布局管理器)例如计算器数字键
GridBaglayout(更高级的方格布局管理器)例如计算器的“等于”按钮
可以将布局管理器设为null。
frame.setLayout(null);
表示:不使用布局管理器,使用组件的大小,位置信息直接固定组件,当窗体大小被改变时,内部组件不会随着改变。
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------