监听器实现多个按钮功能
@
问题
- Frame在设置按钮功能的时候,一个按钮对应一个功能,这样就需要建立多个监听器,如何实现两个或多个按钮的功能只用一个按钮来实现
一、两个或多个按钮公用一个监听器
代码设计如下
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 TestActionTwo {
//两个按钮 实现同一个监听
// 开始 停止
public static void main(String[] args) {
Frame frame = new Frame();
//显示可见
frame.setVisible(true);
//两个按钮 开始 结束
Button button1 = new Button("start");
Button button2 = new Button("stop");
//setActionCommand()方法可以放入值进行判断使用
//button2.setActionCommand("button-stop");
MyMonitor myMonitor = new MyMonitor();
button1.addActionListener(myMonitor);
button2.addActionListener(myMonitor);
//将按钮添加到 frame实例中
frame.add(button1,BorderLayout.NORTH);
frame.add(button2,BorderLayout.SOUTH);
//关闭方法调用
windowClose(frame);
//自适应
frame.pack();
}
//AWT中点击关闭窗口的方法实现
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//继承ActionListener接口
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//判断 e.getActionCommand()的值
if(e.getActionCommand().equals("start")){
System.out.println("现在开始"+e.getActionCommand());
}else{
System.out.println("现在结束"+e.getActionCommand());
}
e.getActionCommand();//获取按钮的信息 默认信息式按钮的名字如果没有用setActionCommand("nishao")存放值的话
}
}
运行结果:

点击按钮后:

总结
通过上述代码可以实现两个或者多个按钮共同使用一个监听器,减小工作量

浙公网安备 33010602011771号