2016-09-16 10 views
0

動的に関連する質問buttonactionPerformedに質問したいと思います。私は、とをcardLayoutjButton1と言うコンテンツメニューを持っています。動的jPanel1にはsaveButtonが含まれます。私はTest ActionListenerjButton1をつけました。私が直面している問題は、以下のコードに示すようにactionCommandjPanel1.saveButtonに設定したことです。そして、jButton1の出力をクリックすると、23が得られます。 2nd3rdjPanel1.SaveButtonもクリックしたが、ちょうど3rdjPanel1.saveButtonをクリックしたと予想された。どうすればいいですか?2nd3rdjPanel1.SaveButtonをクリックしましたか?動的jPanelボタンactionCommand

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 

public class Test implements ActionListener { 

    public Test() { 
    } 

    public void actionPerformed(ActionEvent e) { 

     for (int i = 0; i<2; i++){ 
      jPanel1.save.setActionCommand(String.valueOf(i+2)); 
      String n = jPanel1.save.getActionCommand(); 
      jPanel1.save.doClick(); 
      System.out.println("jPanel1: " + n); 
     } 

      System.out.println("The action have been performed"); 
    } 

    public static void main(String[] agrs) { 
      JButton but = new JButton(); 
      but.addActionListener(new Test()); 
      but.doClick(); 
    } 
} 

Output: 
jPanel1: 2 
jPanel1: 3 
+0

'Test'あなたのテストクラスをよりわかりやすい名前にしてください。あなたがその名前を選ぶ前に何千人もの人がいました。私はジェネリックなテストパッケージからクラスを削除するのがうんざりです。それが立っているので、私はその質問を理解していません。 * "2番目と3番目のjPanel1.SaveButtonがクリックされたのはどうしたらいいのですか?" * "2"が表示された場合は2番目です。 「3」が現れれば、それは第3だった。より一般的には:[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿するとすぐに役立ちます。 –

+0

@Andrew Thompson私は、 'jPanel1.save.doClick();'が 'actionCommand 3'の動的' jPanel1'だけで実行されたということを意味しました。 'actionCommand 2'の' jPanel1'の場合は意味がありません。 – hub

答えて

2

あなたはすべてのActionListenerインスタンスが異なるJPanelを参照したい場合は、そのコンストラクタへの `のJPanel」への参照渡しすることができます:

:その参照を使用するように

JPanel panel1 = new JPanel(); 
JButton but = new JButton(); 
but.addActionListener(new Test(panel1)); 

をし、コンストラクタを変更

JPanel panel; 
public Test(JPanel panel) { 
    this.panel = panel; 
} 
関連する問題