public interface ActionListener extends EventListener{ /**
* Invoked when an action occurs.
*/
public void actionPerformed(ActionEvent e);
}请问ActionListener这个东西,知道它是个接口类,想问的是我们设计的接口都要从它那继承吗?它有多重要?还有actionPerformed(ActionEvent e),是从ActionEvent类生成对象e的意思吗?
* Invoked when an action occurs.
*/
public void actionPerformed(ActionEvent e);
}请问ActionListener这个东西,知道它是个接口类,想问的是我们设计的接口都要从它那继承吗?它有多重要?还有actionPerformed(ActionEvent e),是从ActionEvent类生成对象e的意思吗?
还有actionPerformed(ActionEvent e),是从ActionEvent类生成对象e的意思吗?
是actionPerformed方法的参数是一个ActionEvent对象
import java.awt.event.*;
import java.lang.*;public class 罚款接口 implements ActionListener{ Frame 框架容器;
Panel 面板容器1,面板容器2,面板容器3;
Label 标签1,标签2;
TextField 文本框1,文本框2;
Button 按钮1,按钮2;
CheckboxGroup 单选框;
Checkbox 复选框1,复选框2; double 罚款接口; public static void main(String args[]){
罚款接口 罚款接口=new 罚款接口();
罚款接口.go();
} public void go(){
框架容器=new Frame("计算罚款");
框架容器.setSize(200,180);
面板容器1= new Panel();
面板容器2= new Panel();
面板容器3= new Panel();
文本框1=new TextField(10);
文本框2=new TextField(10);
标签1= new Label("超期天数");
标签2= new Label("罚款数");
按钮1=new Button("计算");
按钮2=new Button("结束");
面板容器1.add(标签1);
面板容器1.add(文本框1); 单选框=new CheckboxGroup();
复选框1=new Checkbox("教职工",true,单选框);
复选框2=new Checkbox("学生",false,单选框);
面板容器2.add(复选框1);
面板容器2.add(复选框2); 面板容器2.add(标签2);
面板容器2.add(文本框2); 面板容器3.add(按钮1);
面板容器3.add(按钮2);
按钮1.addActionListener(this);
按钮2.addActionListener(this); 框架容器.add(面板容器1,"North");
框架容器.add(面板容器2,"Center");
框架容器.add(面板容器3,"South");
框架容器.setVisible(true);
} public void actionPerformed(ActionEvent 用户){
String 规格,合计帐;
double 书籍;
规格=用户.getActionCommand(); if(规格.equals("计算")){
规格=文本框1.getText();
书籍=Double.parseDouble(规格); if(复选框1.getState()==true)
罚款接口=书籍*0.8;
else
罚款接口=书籍*0.2;
合计帐=Double.toString(罚款接口);
文本框2.setText(合计帐);
}else
{System.exit(0);}
}
}
String 规格,合计帐;
double 书籍;
规格=用户.getActionCommand();
if(规格.equals("计算")){
规格=文本框1.getText();
书籍=Double.parseDouble(规格);
if(复选框1.getState()==true)
罚款接口=书籍*0.8;
else
罚款接口=书籍*0.2;
合计帐=Double.toString(罚款接口);
文本框2.setText(合计帐);
}else
{System.exit(0);}
}
}
{
ActionListener al=null;
public void addActionListener(ActionListener a)
{
this.al=a;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
al.actionPerformed(new ActionEvent(this,3,this.getActionCommand());
}
}
只要你做Form..你需要事件,你就去实现你想要的接口...
所以当你出现这些事件时Java会去调用你实现了那个接口的方法...
按钮2.addActionListener(this);
这里很明确的告诉你,添加按钮1的监听事件,其中的this是只的本类
当运行程序点击按钮的时候就会触发监听事件(actionPerformed)并且会把按钮的名字传递进来,也就是
if(规格.equals("计算"))判断是点击了哪个按钮
在里面的代码执行相应的操作
vb的事件判断方式似乎并没用到按钮的"计算"做判断.似乎是Wingdows通过一种底层的方式进行了默认处理,也就是当我们点了某按钮时,Wingdows就把相应的消息发往该按钮处理程序,意思是这个过程是操作系统完成的,按钮处理程序只需接收系统发来的消息即可,不象java那样需要自己亲自判断消息来源,我是这么认为的,不知对否,恳请高手指教.