GUI
一计算机和用户交互的方式
(一)GUI(Graphical User Interfance)图形化用户接口
用图形的方式,来显示计算机操作的界面,方便直观。
(二)CLI(Commmand User Interfance)命令行用户接口
用Dos命令行操作,需要记忆常用的命令,操作不直观
二,GUI
(一)Java为GUI提供的对象都在java.Awt和javax.Swing两个包中
1,java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件(和系统的依赖性较强 )。有点依赖于平台
2,javax.Swing:在AWT的基础上(有些类是AWT的子类=),建立的一套图形界面系统,其中提供了更多的组件,而且完全由J ava实现。增强了移植性,属轻量级控件。适用于任何平台(常用)
(二)体系:
Component(构件,组件)
Container(容器) Button(按钮)
Window(窗口) Panel(面板) Label(标签)
Frame(窗体) Dialog(对话框) Checkbox(复选框)
FileDialog(文件对话框) TextComponent(文本组件)
TextArea文本区域 TextField文本框
Container:为容器,该组件中可以通过add方法添加其他组件进来
(三)布局(组件的排放)
常见的布局管理器:
• FlowLayout(流式布局管理器)
• 从左到右的顺序排列。
• Panel默认的布局管理器。
• BorderLayout(边界布局管理器)
• 东,南,西,北,中
• Frame默认的布局管理器。
• GridLayout(网格布局管理器)
• 规则的矩阵
• CardLayout(卡片布局管理器)
• 选项卡
• GridBagLayout(网格包布局管理器)
• 非规则的矩阵
• 坐标式布局
• 自定义位置,可以运用高级编辑器,如Eclipse+图形化界面插件。
(四)创建
1,Component
方法:void setVisible(boolean b) 根据参数 b 的值显示或隐藏此组件
(Frame默认是边界式布局)
2,事件监听机制
流程图
事件监听机制的特点
1,事件源:awt包或者swing包中的那些图形界面组件
2,事件:每一个事件源都有自己的特有的对应事件和共性事件(鼠标,键盘等)
3,监听器:就是将可以触发某一个事件的动作(不止一个)都已经封装到了监听器中
(以上三者在java中都定义好了,可以直接获取对象使用)
4,事件处理:(编辑者编辑)
方法:void addWindowFocusListener(WindowListener l)
添加指定的窗口侦听器,以从此窗口接收窗口事件。
void windowActivated(WindowEvent e)
激活窗口时调用(将窗口前置)
void windowOpened(WindowEvent e)
已打开窗口时调用
示例:
/*
创建图形化界面
1,创建Frame窗体
2,对窗体进行基本设置
比如大小,位置,布局
3,定义组件
4,将组将通过窗体的add方法添加到窗体中
5,让窗体显示,通过setVisible(ture)
*/
import java.awt.*;
import java.awt.event.*; //事件监听机制
class AwtDemo
{
public static void main(String[] args)
{
Frame f = new Frame("my awt");
f.setSize(500,400);
//设置大小,第一个是横长,地二个是纵长
f.setLocation(300,200);
//设置位置,第一个是距左边距离,第二个是距右边距离
f.setLayout(new FlowLayout());
//设置布局模式管理
Button b = new Button("我是一个按钮");
f.add(b);
f.setVisible(true);
//图形化界面是由主线程外的线程控制
//连接窗口监听器
void addWindowFocusListener(new MyWin());
System.out.println("Hello World!");
}
}
/*
class MyWin implements WindowListener
{
//因为Windowlistener是一个借口,需要覆盖七个方法,
//可以只需要一个关闭的方法,因此不击继承它
//继承其子类WindowAdapter对象
}
*/
class MyWin extends WindowAdapter//WindowAdapter在java,awt,event中
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
3,共性事件:鼠标和键盘
(1)鼠标:添加事件:
按钮.addMouseListener(new MouseAdapter() 给按钮添加鼠标监听器
void mouseEntered(MouseEvent e) 鼠标进入组件
mouseClicked(MouseEvent e) 点击鼠标动作
在MouseEvent类中getClickCount() 获取鼠标次数
(2)键盘:添加事件:
按钮.addKeyListener(new KeyAdapter() 给按钮添加鼠标监听器
在MouseEvent e中封装每个键的事件
e.getKeyChar(); e.getKeyCode(); 每个按键对应的数字
而每个按键对应的码:KeyEvent.VK_ENTER
Cral+enter键对应的码:
e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER
4,添加文本框:new TextField(列数)
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
int code = e.getKeyCode()
if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9))
{
System.out.println(code+".....是非法的");
e.consume();
//使用此事件,不会按照默认的原代码来处理此事件
//取消让非法字符进入文本框
}
}
});
5,对话框:Dialog是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入。对话框一般不单独存在,依赖于窗体
FileDialog :文本对话框 mode:LOAD 打开(默认);SAVE 保存
6,GUI菜单:
1)MenuBar: 菜单栏或菜单条,为了将该菜单栏与 Frame 对象关联可以调用该框架的 setMenuBar 方法。
2)Menu : 菜单 添加菜单方法:add()
3)MenuItem: 菜单栏目
Menu extends MenuItem因而Menu中既可以添加自己(带箭头),也可以添加父类
7,双击执行GUI
总结:学习GUI,就是学习简历图形化界面,虽然只是学习创建一下窗口,但也也比Dos好看啊
学习GUI,主要要记住窗体和各个组建类的用法,如WindowFile ,Button等,这些是创建一个窗体的必要条件
还要熟练每个组建的添加,调用等的方法,这是使组建有用的必备。