java常见事件响应方法实例汇总(2)
四、 AbstractAction类 + 反射 的方法 效果:单击工具栏的三个按钮,通过按钮的名称,反射得到 与按钮名称相同的类实现响应。 import java.awt.BorderLayout; impo
四、 AbstractAction类 + 反射 的方法
效果:单击工具栏的三个按钮,通过按钮的名称,反射得到 与按钮名称相同的类实现响应。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.*;
class ViewAction extends AbstractAction{
private String ActionName="";
//private JFrame frame=null;
private Action action=null;
public ViewAction(){
}
public ViewAction(String ActionName){
this.ActionName=ActionName;
//this.frame=frame;
}
@Override
public void actionPerformed(ActionEvent e) {
Action action=getAction(this.ActionName);
action.execute();
}
private Action getAction(String ActionName){
try{
if (this.action==null){
Action action=(Action)Class.forName(ActionName).newInstance();
this.action=action;
}
return this.action;
}catch(Exception e){
return null;
}
}
}
public class TestAE extends JFrame {
public JToolBar bar=new JToolBar();
String buttonName[]={"b1","b2","b3"};
public TestAE(){
super("事件");
for (int i=0;i<buttonName.length;i++){
ViewAction action=new ViewAction(buttonName[i]);
JButton button=new JButton(buttonName[i]);
button.addActionListener(action);
bar.add(button);
}
this.getContentPane().add(bar,BorderLayout.NORTH);
this.setSize(300, 200);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public static void main(String [] args){
new TestAE();
}
}
interface Action{
void execute();
}
class b1 implements Action{
public void execute(){
JOptionPane.showMessageDialog(null, "单击了 b1");
}
}
class b2 implements Action{
public void execute(){
JOptionPane.showMessageDialog(null, "单击了 b2");
}
}
class b3 implements Action{
public void execute(){
JOptionPane.showMessageDialog(null, "单击了 b3");
}
}
上述实例备有较为详尽的注释,应该不难理解。希望本文所述实例对大家能够有所帮助。
- 上一篇:java实现动态代理方法浅析
- 下一篇:JAVA得到数组中最大值和最小值的简单实例
精彩图集
精彩文章





