在学awt事件处理过程中,我以前做法是实现actionlistener,然后添加监听,最后在响应事件的方法里面处理,我一般是这么处理的:public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==xxx)
但是我老师说不建议用这个,而是用if(e.getActionCommand().equals("xxx")),,但是同一个类里面有很多个相同名称的xxx控件时那该怎么区分是哪个控件产生的事件呢?但是第一种方法不会遇到此问题。我老师说第一种要转换类型,有时候。,我也没听清楚!

解决方案 »

  1.   

    if(e.getSource()==xxx)
          vs
    if(e.getActionCommand().equals("xxx"))
      

  2.   

    这两个方法都可以的。
    是你的理解错了
    if(e.getSource()==xxx)
    xxx为组件名
    if(e.getActionCommand().equals("xxx"))
    xxx为标题简单点就是
    Button btn =new Button("Button");
    if(e.getSource()==btn)
    if(e.getActionCommand().equals("Button"))
      

  3.   

    但是我有多个为"Button"的按钮那怎么区分?
    如:Button b1=new Button("Button");
    Button b2=new Button("Button");
    Button b3=new Button("Button");
    Button b4=new Button("Button");
    那if(e.getActionCommand().equals("Button"))这个不能区分吧!?
      

  4.   

    还有一个方法是setActionCommand(String actionCommand);
    用getSource().equal(XXX)的话,XXX必须要是全局变量。如果用内部匿名类的,XXX也必须是final。
      

  5.   

    if(e.getSource()==xxx)需要类型转换检证倒是真的。
      

  6.   

    其实 equals() 和 == 都是表示相等 
    == 只能是值之间的比较 
    equals()  是针对引用之间的比较