概述
Graphical User Interface(图形用户接口):用图形的方式来显示计算机操作界面。
-
java提供的两个开发包:
java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件,不同情况下显示效果可能不一致。
javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件,保证了在不同系统中显示效果的一致性,开发中多用此包。
继承关系图:
创建图形化界面的过程:
-
1,创建frame窗体。
2,对窗体进行基本设置。
比如大小,位置,布局。
3,定义组件。
4,将组件通过窗体的add方法添加到窗体中。
5,让窗体显示,通过setVisible(true)
该过程一般放在初始化方法中:
public void init()
{
//创建窗体
f = new Frame("my frame");
//窗体基本设置
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
//定义组件
tf = new TextField(20);//文本框
but = new Button("my button");//按钮
//将组件添加到窗体
f.add(tf);
f.add(but);
//加入监听动作
myEvent();
//将窗体设为可见
f.setVisible(true);
}
事件监听机制
事件监听机制的特点:
1,事件源。
2,事件。
3,监听器。
4,事件处理。
事件源:awt包或者swing包中的那些图形界面组件。
事件:事件源都有自己特有的对应事件和共性事件(鼠标、键盘事件)
监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。
一个界面的监听一般封装在一个方法内,如上面的myEvent()。
监听之 窗体
f.addWindowListener(new WindowAdapter()//窗体监听器的子类-窗体适配器的匿名子类
{
public void windowClosing(WindowEvent e)//监听到窗体上发生windowClosing事件时,
{
f.setVisible(false);//将窗体设为不可见
//System.exit(0); //也可以直接退出系统
}
});
监听之 按钮
but.addActionListener(new ActionListener()//按钮的监听器无需适配器,
{
public void actionPerformed(ActionEvent e)//只有一个事件动作:点击(actionPerformed)
{
d.setVisible(false);//内部可定义其他组件如何变化,而不只是自己
}
});
监听之 菜单
菜单栏–菜单–子菜单-菜单项 ————创建过程
bar = new MenuBar();//创建一个菜单栏对象
fileMenu = new Menu("文件");//创建一个菜单对象
childMenu = new Menu("子菜单");//创建一个菜单对象作为子菜单
openItem = new MenuItem("打开");//创建菜单项
saveItem = new MenuItem("保存");
fileMenu.add(openItem);//菜单项添加到菜单
fileMenu.add(saveItem);
fileMenu.add(childMenu);//将子菜单也添加到菜单上
bar.add(fileMenu);//将菜单添加到菜单栏
f.setMenuBar(bar);//将菜单栏放到窗体上
监听:菜单和子菜单的鼠标移入事件无需定义,只需要定义菜单项的点击事件即可
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
}
});
监听之共性时间:键盘
tf.addKeyListener(new KeyAdapter()//给某一组件添加键盘监听器
{
public void keyPressed(KeyEvent e)//监听键盘的keyPressed动作
{
int code = e.getKeyCode();
if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9))
{
System.out.println(code+".....是非法的");
e.consume();
}
}
});
监听之共性事件: 鼠标
but.addMouseListener(new MouseAdapter()//给but组件添加鼠标监听
{
private int count = 1;
private int clickCount = 1;
public void mouseEntered(MouseEvent e) //鼠标进入该组件上方时
{
System.out.println("鼠标进入到该组件"+count++);
}
public void mouseClicked(MouseEvent e)//鼠标点击时
{
if(e.getClickCount()==2)
System.out.println("双击动作"+clickCount++);
}
});