1 需求
需求1:点击button,监听事件响应
2 接口
Class Button
java.lang.Object
java.awt.Component
java.awt.Button
- Constructor Detail
- public Button() throws HeadlessException
- public Button(String label) throws HeadlessException
- Method Detail
- public void addNotify()
- public String getLabel()
- public void setLabel(String label)
- public void setActionCommand(String command)
- public String getActionCommand()
- public void addActionListener(ActionListener l)
- public void removeActionListener(ActionListener l)
- public ActionListener[] getActionListeners()
- public
T[] getListeners(Class listenerType) - protected void processEvent(AWTEvent e)
- protected void processActionEvent(ActionEvent e)
- protected String paramString()
- public AccessibleContext getAccessibleContext()
3 示例代码
方式一:内部匿名类
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test {
// 定义 组件
Frame frame = new Frame("Button事件监听三种方式");
Button btn1 = new Button("method1");
Button btn2 = new Button("method2");
Button btn3 = new Button("method3");
void init() {
// 组装 组件
frame.add(btn1, BorderLayout.NORTH);
frame.add(btn2);
frame.add(btn3, BorderLayout.SOUTH);
// 最佳大小
frame.pack();
// 窗口可视
frame.setVisible(true);
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("btn1");
}
});
ActionListener actionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("btn2");
}
};
btn2.addActionListener(actionListener);
// btn2.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
//
// }
// });
btn3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("btn3");
}
});
}
public static void main(String[] args) {
new Test().init();
}
}
方式二:自定义监视器,实现actionPerformed方法
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test {
// 定义 组件
Frame frame = new Frame("Button事件监听三种方式");
Button btn1 = new Button("method1");
Button btn2 = new Button("method2");
Button btn3 = new Button("method3");
void init() {
// 组装 组件
frame.add(btn1, BorderLayout.NORTH);
frame.add(btn2);
frame.add(btn3, BorderLayout.SOUTH);
// 最佳大小
frame.pack();
// 窗口可视
frame.setVisible(true);
MyActionListener myActionListener = new MyActionListener();
btn1.addActionListener(myActionListener);
btn2.addActionListener(myActionListener);
btn3.addActionListener(myActionListener);
}
class MyActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
switch (e.getActionCommand()) {
case "method1":
System.out.println("btn1");
break;
case "method2":
System.out.println("btn2");
break;
case "method3":
System.out.println("btn3");
break;
default:
break;
}
}
}
public static void main(String[] args) {
new Test().init();
}
}
方式三:实现ActionListener接口,重写actionPerformed方法
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test implements ActionListener {
// 定义 组件
Frame frame = new Frame("Button事件监听三种方式");
Button btn1 = new Button("method1");
Button btn2 = new Button("method2");
Button btn3 = new Button("method3");
void init() {
// 组装 组件
frame.add(btn1, BorderLayout.NORTH);
frame.add(btn2);
frame.add(btn3, BorderLayout.SOUTH);
// 最佳大小
frame.pack();
// 窗口可视
frame.setVisible(true);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
switch (e.getActionCommand()) {
case "method1":
System.out.println("btn1");
break;
case "method2":
System.out.println("btn2");
break;
case "method3":
System.out.println("btn3");
break;
default:
break;
}
}
public static void main(String[] args) {
new Test().init();
}
}
4 参考资料
Java Swing Button控件点击事件的几种写法
我可以在Java中的actionPerformed方法中使用switch - case - 或代码
Android实现Button按钮点击事件监听的几种方式 - 疯侠 - 博客园



