监听器实现多个按钮功能

@


问题

  • 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")存放值的话
    }
}

运行结果:

点击按钮后:

总结

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

posted @ 2022-04-09 20:05  serys  阅读(182)  评论(0)    收藏  举报