1) 基本GUI界面
package GUI;
import java.awt.*;
public class TestFrame {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f=new Frame("www.it315.org");//定义容器界面
f.add(new Button("ok"));//添加按钮
f.setSize(300, 300);//设置窗口的宽、高
f.setVisible(true);//设置窗口为可视
try {
Thread.sleep(5000);//所有线程停5秒
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//f.setVisible(false);
f.dispose();//释放该界面
}
}
2)AWT事件处理
事件处理机制
事件分类
事件监听器
事件适配器
灵活设计事件监听器类
用匿名内置类实现事件监听器
事件处理的多重应用
修改组件的默认事件处理方式
3) 事件监听器,完成窗口关闭功能
(此处省略若干行)
完成事件监听器的相关方法
public void windowClosing(WindowEvent arg0) {
arg0.getWindow().setVisible(false);//获得窗口对象,使其隐藏
((Window)arg0.getComponent()).dispose();//释放窗口对象
System.exit(0);//使程序停止运行
在组件中添加时间监听器:
f.addWindowListener(new MyWindowListener());//添加事件监听器
4)用事件适配器实现窗口的关闭
重写事件适配器中的方法:
package GUI;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class YourWindowListener extends WindowAdapter {
public void windowClosing(WindowEvent e)
{
e.getWindow().dispose();//释放窗口资源
System.exit(0);//关闭程序
}
}
把事件适配器添加到事件监听器中:
f.addWindowListener(new YourWindowListener());//添加事件监听器
5)处理按钮事件
package GUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestFrame implements ActionListener {
Frame f=new Frame("www.it315.org");
public void init(TestFrame tf)
{
Button button=new Button("关闭");
button.addActionListener(tf);
f.add(button);
f.setSize(300, 300);
f.addWindowListener(new YourWindowListener());//添加事件监听器
f.setVisible(true);
}
public void init()
{
Button button=new Button("关闭");
button.addActionListener(this); //用当前对象,而不是新定义对象
f.add(button);
f.setSize(300, 300);
f.addWindowListener(new YourWindowListener());//添加事件监听器
f.setVisible(true);
}
public static void main(String[] args) {
TestFrame t=new TestFrame();
t.init();
}
public void actionPerformed(ActionEvent arg0) {
f.dispose();
}
}
6)内置类
package GUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestFrame {
Frame f=new Frame("www.it315.org");
public void init(TestFrame tf)
{
Button button=new Button("关闭");
button.addActionListener(new MyActionLinsener());
f.add(button);
f.setSize(300, 300);
f.addWindowListener(new YourWindowListener());//添加事件监听器
f.setVisible(true);
}
public void init()
{
Button button=new Button("关闭");
button.addActionListener(new MyActionLinsener());
f.add(button);
f.setSize(300, 300);
f.addWindowListener(new YourWindowListener());//添加事件监听器
f.setVisible(true);
}
public static void main(String[] args) {
TestFrame t=new TestFrame();
t.init();
}
class MyActionLinsener implements ActionListener{//定义内置类
public void actionPerformed(ActionEvent arg0) {
f.dispose();
}
}
}
7)定义匿名类
package GUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestFrame {
Frame f=new Frame("www.it315.org");
public void init()
{
Button button=new Button("关闭");
button.addActionListener(new ActionListener(){//定义匿名类
public void actionPerformed(ActionEvent arg0) {
f.dispose();
}
});
f.add(button);
f.setSize(300, 300);
f.addWindowListener(new YourWindowListener());//添加事件监听器
f.setVisible(true);
}
public static void main(String[] args) {
TestFrame t=new TestFrame();
t.init();
}
}
8)事件处理的多重应用。
我的理解:
1- 按钮可以有按按钮的高级事件,也可以有按钮按下,按钮弹起的低级事件
2- 一个监听事件,可以被多个按钮调用,重复使用
3- 一个动作可以有多个事件来处理。
9)修改事件的默认事件处理方式。
编写一个按钮,鼠标移动到上边,按钮就会去别的地方。
按钮类:
package GUI;
import java.awt.*;
import java.awt.event.MouseEvent;
public class MyButton extends Button {
private MyButton friend=null;//定义一个朋友按钮
public MyButton(String title)//重写构造方法
{
super(title);
this.enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);//修改默认设置,使鼠标移动事件有效
}
//重写该事件
public void processMouseMotionEvent(MouseEvent e)
{
setVisible(false);//使当前按钮隐藏
friend.setVisible(true);//使朋友按钮显示
}
public MyButton getFriend() {
return friend;
}
public void setFriend(MyButton friend) {
this.friend = friend;
}
}
主程序:
package GUI;
import java.awt.*;
import java.awt.event.*;
public class TestMyButton extends Frame {//定义一个自己的窗口,继承窗口类
public TestMyButton()//添加构造方法
{
addWindowListener(new WindowAdapter(){//注册窗口适配器
public void windowClosing(WindowEvent arg0) {//重写关闭窗口的方法
dispose(); //释放该窗口
System.exit(0);//停止程序的运行
}
});
}
public static void main(String[] args) {
System.out.println("starting TestMyButton..");
TestMyButton mainFrame=new TestMyButton();//实例化定义的创库
MyButton btn1=new MyButton("你来抓我呀");//实例化按钮
MyButton btn2=new MyButton("你来抓我呀");
btn1.setFriend(btn2);//关联这上边实例的两个按钮
btn2.setFriend(btn1);
mainFrame.add(btn1,"North");//设置按钮的位置
mainFrame.add(btn2,"South");
mainFrame.setSize(400, 400);//设置窗口的大小
mainFrame.setTitle("TestMyButton");
mainFrame.setVisible(true);
btn2.setVisible(false);//先隐藏btn2
}
}