07 事件监听
1.构造事件监听器
package GUI;
import java.awt.*;
import java.awt.event.*;
public class Test06_ActionListener {
public static void main(String[] args) {
class Mylistener implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("詹建海");
}
}
Mylistener mylistener = new Mylistener();
Frame frame = new Frame("my frame");
Button button = new Button("1");
frame.setVisible(true);
frame.add(button,BorderLayout.CENTER);
frame.pack(); // 自适应居中
// 按钮监听器
button.addActionListener(mylistener);
// 窗口监听器
windowClose(frame);
}
public static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
2.多个按钮共享一个事件监听器
package GUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test06_lla {
// 多个按钮共用同一个监听器,但干着不同的工作
public static void main(String[] args) {
Frame frame = new Frame();
Button button1 = new Button("star");
Button button2 = new Button("stop");
frame.setVisible(true);
frame.add(button1,BorderLayout.WEST);
frame.add(button2,BorderLayout.EAST);
button1.setActionCommand("zhan_star"); // 设置按钮的信息,不使用这个函数的话为默认值:标签label
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 多个按钮共用同一个监听器,但干着不同的工作
MyListener myListener = new MyListener();
button1.addActionListener(myListener);
button2.addActionListener(myListener);
}
}
//
class MyListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("这个按钮的信息是:"+e.getActionCommand()); // 这个函数获得按钮的信息
if(e.getActionCommand().equals("star"))
// do something ,eg:
System.out.println(1);
if(e.getActionCommand().equals("stop"))
// do something ,eg:
System.out.println(2);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?