2012-10-17 50 views
1

我想用第一的ActionListener(关于)进入第二的ActionListener(为约2) 而不复制的第一个成德第二个是有没有办法做到这一点?使用的ActionListener到另一个的ActionListener

About.addActionListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent ae){ 
      AboutMe.setLocation(470,250); 
      AboutMe.setSize(400, 200); 
      AboutMe.setVisible(true); 
      AboutMe.setResizable(false); 
      AboutMe.add(panel5); 
      panel5.setLayout(null); 
      panel5.add(ta); 

     ta.setBounds(15, 15, 350, 130); 
     ta.setBorder(BorderFactory.createEtchedBorder()); 
     ta.setText("...................................\n" 
       + "....................................\n" 
       + "....................................\n" 
       + "....................................\n" 
       + "...................................."); 
     ta.setEditable(false); 
     } 
     } 
    ); 



About2.addActionListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent ae){ 

        ////////code here/////////////// 
     } 
     } 
    ); 

回答

1

好吧,只要你不使用ActionEvent的说法,你可以只创建一个这样在你的类中的方法,

public void doAction() { 
AboutMe.setLocation(470,250); 
      AboutMe.setSize(400, 200); 
      AboutMe.setVisible(true); 
      AboutMe.setResizable(false); 
      AboutMe.add(panel5); 
      panel5.setLayout(null); 
      panel5.add(ta); 

     ta.setBounds(15, 15, 350, 130); 
     ta.setBorder(BorderFactory.createEtchedBorder()); 
     ta.setText("...................................\n" 
       + "....................................\n" 
       + "....................................\n" 
       + "....................................\n" 
       + "...................................."); 
     ta.setEditable(false); 
} 

,并在您actionPerformed方法,只需调用

doAction(); 

所以这样,

About.addActionListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent ae){ 
doAction(); 

    ); 
2

在这里做将是匿名对象的引用复制到一个临时变量并传递引用最简单的事情。

ActionListener temp= new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent ae){ 
      AboutMe.setLocation(470,250); 
      AboutMe.setSize(400, 200); 
      AboutMe.setVisible(true); 
      AboutMe.setResizable(false); 
      AboutMe.add(panel5); 
      panel5.setLayout(null); 
      panel5.add(ta); 

     ta.setBounds(15, 15, 350, 130); 
     ta.setBorder(BorderFactory.createEtchedBorder()); 
     ta.setText("...................................\n" 
       + "....................................\n" 
       + "....................................\n" 
       + "....................................\n" 
       + "...................................."); 
     ta.setEditable(false); 
     } 
     }; 

About.AddActionListener(temp); 
About2.AddActionListener(temp); 

另一种选择是让你的类实现ActionListener并简单地做:

About.AddActionListener(this) 
About2.AddActionListener(this); 

虽然你可以做上面的评论说,它是不是最好的主意。 另一种选择是创建另一个类来实现ActionListener并创建该类的一个实例。

public class ReusableListener implements ActionListener 

ActionListener listener = new ReusableListener() ;//as a field 

About.addActionListener(listener) ; 
About2.addActionListener(listener) ; 
+0

我喜欢的部分分开回答有关其本身实现ActionListener类,具有延伸的JFrame实现的ActionListener,MouseListener的,的MouseMotionListener,维护的DocumentListener类.... –

+0

@RickyClarkson我明白了。我也不会推荐它。我会编辑我的答案。 –

相关问题