public interface ActionListener extends EventListener{    /**
     * Invoked when an action occurs.
     */
    public void actionPerformed(ActionEvent e);
}请问ActionListener这个东西,知道它是个接口类,想问的是我们设计的接口都要从它那继承吗?它有多重要?还有actionPerformed(ActionEvent e),是从ActionEvent类生成对象e的意思吗?

解决方案 »

  1.   

    当你要使用鼠标事件时就要使用MouseListener看情况而定.
      

  2.   

    想问的是我们设计的接口都要从它那继承吗?没有这个必要
    还有actionPerformed(ActionEvent e),是从ActionEvent类生成对象e的意思吗?
    是actionPerformed方法的参数是一个ActionEvent对象
      

  3.   

    哦,你是说括号里面的e不能说由ActionEvent生成,但它是ActionEvent类型的对象是吗?
      

  4.   

    是的 例如ActionEvent的子类ActionEventSun有个对象actionPerformed,actionPerformed(actionPerformed)也是正确的
      

  5.   

    对于actionPerformed(ActionEvent e),在知道括号里面是参数,我想知道的是括号里面的ActionEvent和e是什么关系,好象系统就这么定的,我们能改它吗?
      

  6.   

    e这个东西是ActionEvent类型的对象,你可以改啊,改ActionListener的源文件重新编译过就可以了.不过我建议你不要改,除非你十分清楚,这个接口是干什么的,作用是什么
      

  7.   

    你是说我们可以该rt.jar里面的类,让它重新编译成新的class文件吗?这样java允许?
      

  8.   

    其实我是从下面的代码看不懂才问的,主要是对后面的接口实现部分不知什么是什么,这里为便于解读我把变量都中文化了,实现部分的用户、规格等变量是我根据大概意思随便定的,谁能跟我解释下后面接口实现部分的意思,主要是讲解下其中的逻辑过程吧,还有“结束”按钮好象在这里看不到实现的代码啊。import java.awt.*;
    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);}
      }
    }
      

  9.   

    主要是后面这段小东西,短短的不多啊,谁能帮忙啊!全给分了。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);}
      }
    }
      

  10.   

    public class Button
    {
    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());
    }
    }
      

  11.   


          只要你做Form..你需要事件,你就去实现你想要的接口...
              所以当你出现这些事件时Java会去调用你实现了那个接口的方法...
      

  12.   

    按钮1.addActionListener(this);
    按钮2.addActionListener(this);
    这里很明确的告诉你,添加按钮1的监听事件,其中的this是只的本类
    当运行程序点击按钮的时候就会触发监听事件(actionPerformed)并且会把按钮的名字传递进来,也就是
    if(规格.equals("计算"))判断是点击了哪个按钮
    在里面的代码执行相应的操作
      

  13.   

    哦,是这样,看得出java跟vb的事件处理方式明显不同,我还是用vb的思想来思考java呢,呵呵!好悲哀啊!
    vb的事件判断方式似乎并没用到按钮的"计算"做判断.似乎是Wingdows通过一种底层的方式进行了默认处理,也就是当我们点了某按钮时,Wingdows就把相应的消息发往该按钮处理程序,意思是这个过程是操作系统完成的,按钮处理程序只需接收系统发来的消息即可,不象java那样需要自己亲自判断消息来源,我是这么认为的,不知对否,恳请高手指教.
      

  14.   

    唉!也是,感觉java就是跟vb的事件处理机制不同,慢慢领会吧!