事件监听的概念也是见名知意,就是当某一个事件发生时,产生相应的效果。
我们来结合之前学过的小知识点,来做一个监听的练习。
public static void main(String[] args) {
Frame frame = new Frame("初识监听");
Button button = new Button("button1");
MyAction myAction = new MyAction();
//给按钮添加监听事件
button.addActionListener(myAction);
frame.setVisible(true);
frame.setBackground(Color.pink);
frame.setBounds(150,150,300,300);
frame.add(button);
}
//下面是自定义的 实现了ActionListener 接口的类
//自定义一个监听类,实现ActionListener接口
class MyAction implements ActionListener{
//这个方法是实现的ActionListener接口的方法
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击了");
}
}
//执行程序,效果如下图
其实很简单,然后点一下按钮,控制台就会打印一句 自定义类中实现的接口方法中的语句。这个效果也正如监听的概念,当每个事件发生时,就产生什么样的效果。
其实目前程序没有关闭的实现,就是点击窗口容器的关闭按钮没有任何效果,我们可以在往代码里填一个关闭功能。
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
那通过上述内容,我们学会玩ActionListener事件监听,我们可以对按钮进行监听,也可以对窗口容器的按钮进行监听,那两个按钮可以共用一个监听器么??
我们先来用代码写一下,然后在看一下执行效果,看看能不能实现
//两个按钮实现一个监听
public static void main(String[] args) {
Frame frame = new Frame("开始-停止测试");
Button button1 = new Button("start");
Button button2 = new Button("stop");
//设置窗口容器
frame.setVisible(true);
frame.setBackground(Color.pink);
frame.setBounds(150,150,300,300);
//在多设置一点,别把布局知识点忘了
frame.add(button1,BorderLayout.NORTH);
frame.add(button2,BorderLayout.SOUTH);
//给按钮设置消息
button1.setActionCommand("start 按钮被点击了");
button2.setActionCommand("stop 按钮被点击了");
//给按钮添加监听事件,两个按钮添加同一个
Action action = new Action();
button1.addActionListener(action);
button2.addActionListener(action);
}
}
//定义自定义监听类
class Action implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("被点击的按钮是::=>" + e.getActionCommand());
}
}
//那,,代码写好了,我们来看一下效果
看到效果了,我们可以得出结论:显示定义按钮触发时返回命令,如果不显示定义则会返回默认值,当然我们这里的两个按钮都显示定义了。多个按钮是可以只写或者说共用一个监听的。