2016-06-26 7 views
-1

追加パラメータを渡すにはどうすればよいですか?ここでObjectをパラメータとしてActionListenerに渡す

は試してみて、私が何をしたいのかにそれを明確にするためにいくつかのサンプルコードです:

public class A { 

    public static void create(String txt, ActionListener evt){ 
     MenuItem item = new MenuItem(txt); 
     SomeClass sample_class = new SomeClass(); 

     // Would like to do this... 
     // item.addActionListener(evt, sample_class); 

     item.addActionListener(evt); 
    } 

} 

public class B { 

    public static void init(){ 
     A.create("Test", evt -> { 
      System.out.println("hi"); 
     }); 
    } 

} 

私がやりたい何か、アクションリスナーはそれを使用することができますので、「sample_class」を渡しています。

だから、最終結果はこのようになるので、私は、リスナーに私のクラスを使用することができます...

A.create("Test", (evt, something) -> { 
    something.do_something(); 
}); 

はこれに似たかなりの数の質問を読みましたが、私は私の先をラップすることはできませんその周りに。

+0

ActionListenerを実装するクラスを作成し、好きなメンバ変数を設定するだけで、追加のパラメータを追加する必要はありません。 – Tibrogargan

+0

ああ、大丈夫です。意味をなさない今はラムダを使うことができないと思うのですが? – JacketPotatoeFan

+1

"あなたが持っている唯一のツールがハンマーであれば、釘であるかのようにすべてを扱うためには魅力的だと思います" - Abraham Maslow – Tibrogargan

答えて

-1

SomeClassにActionListenerを実装し、イベントをカプセル化することができます。

public class A { 
    public static void create(String txt, ActionListener evt){ 
     MenuItem item = new MenuItem(txt); 
     SomeClass sample_class = new SomeClass(evt); 

     item.addActionListener(sample_class); 
    }  
} 

public class SomeClass implements ActionListener { 
    ActionListener evt; 

    public SomeClass(ActionListener evt) { 
     this.evt = evt; 
    } 

    @Override 
    public void actionPerformed(ActionEvent ae) { 
     this.evt.actionPerformed(ae); 
    } 
} 
関連する問題