package org.gan.listener;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Panel1 {
public static void main(String[] args) {
Frame f = new Frame();
f.setBounds(100, 100, 300, 300);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
Button b = new Button("BB");
java.awt.Panel p = new java.awt.Panel();
p.add(b);
f.add(p);
f.setVisible(true);
}
}
要知道 Frame的获得有两种方式,一种就是Frame f = new Frame();
还有一种就是直接继承自Frame类,通过this进行调用。
要注意 窗口的关闭监听是加载在Frame的对象之上的。Frame 框架的意思
框架上不能直接添加组件 组件要首先通过panel 来添加进panel 然后呢再通过Frame添加进框架内
组件的添加监听方法 addWindowListener方法竟然是在WindowAdapter设配器类中的,程序中运用的而是适配器类匿名类
直接new了一个匿名类出来 ,没有名字的。
package org.gan.listener;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class ActionListener2 extends Frame{
Panel p = new Panel();
TextField txtField = new TextField(50);
Button btn = new Button("提交");
public void init() {
this.setLayout(new FlowLayout());
// 注册ActionListener接口
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
btn.addActionListener(new myActionListen());
p.add(txtField);
p.add(btn);
this.setBackground(Color.GRAY);
this.add(p);
// 设置标题
this.setTitle("事件处理程序");
// 设置尺寸,默认为(0,0)
this.setSize(500, 500);
// 设置是否可见,默认为false
this.setVisible(true);
}
// 实现ActionListener接口
public class myActionListen implements java.awt.event.ActionListener {
public void actionPerformed(ActionEvent e) {
txtField.setText("Hello World!");
}
}
public static void main(String[] agrs) {
new ActionListener().init();
}
}
如上例所述,对一个按钮设置监听,
通过一个内部类来实现,监听的对象是那个内部类的实例。