2012-10-17 52 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我明白了。我也不會推薦它。我會編輯我的答案。 –

相關問題