GUI之事件监听(简单的监听例子、两个按钮,实现同一个监听)


事件监听:(Listoner),事件监听都可以使用addWindowListener来做
  当某个事情发生的时候,干什么?

简单的事件监听例子:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
    //按下按钮,触发一些事件
        Frame fra=new Frame();//创建一个窗体
        
        Button button=new Button();//创建一个按钮
        //因为,addActionListener()需要一个ActionListener,所以我们需要构造一个ActionListener,接口就写实现类,父类就写继承
        MyActionListener myActionListener =new MyActionListener(); 
        //当做一个事件监听,要输入一个执行参数,我们要创建一个实现类去实现他的接口ActionListener,或继承他对象的父类,然后在实现类或子类中继承有方法,编写执行代码,
        button.addActionListener(myActionListener);//要输入一个执行参数
        //将按钮放到窗体的中间
        fra.add(button,BorderLayout.CENTER);
        //显示窗体
        fra.setVisible(true);
        fra.pack();//让窗体使用最优布局
        Closewin(fra);//关闭窗体
    }
    //将关闭窗体的代码抽取成一个方法
    public static void Closewin(Frame fra){
          //配置窗口关闭的监听事件
          fra.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                    System.exit(0);
                }
            });
    }
    
}
//事件监听:创建一个接口的实现类,做为监听事件的参数,也可以用内部类实现
class MyActionListener implements ActionListener{
    //该方法为接口的方法
    public void actionPerformed(ActionListener e){
        //写实现,当按钮点击是,会执行这个方法中的实现内容
        System.out.println("aa");
    }
}

两个按钮,实现同一个监听:

public class TestActionTwo {
    public static void main(String[] args) {
    //两个按钮,实现同一个监听
    //开始 停止
    Frame frame =new Frame("开始-停止");//创建窗体,并命名
    //创建按钮
    Button button1=new Button("start");//开始
    Button button1=new Button("stop");//停止
    //设置按钮上的内容,可以在监听类中使用setActionCommand方法,来获取内容
    //可以多个按钮只写一个监听类
    button1.getActionCommand("button1-start");
    //调用监听方法,传监听事件
    button1.addActionListener();
    button2.addActionListener();    
        
    }
    
}

//创建一个类,实现ActionListener接口,使类成为监听事件类
class MyMoinitor implements ActionListener{
    public void actionPerformed(ActionEvent e){
        // e.getActionCommand():获得按钮上的内容
    //    e.setActionCommand();
        //判断,按钮上返回的值是多少
        if(e.getActionCommand.equals("button1-start")){
            
            //开始,线程的代码
        }else{
            //停止 线程代码
            
        }
    }
    
}

相关