2016-06-26 3 views
-1

Wie kann ich einen zusätzlichen Parameter übergeben?Objekt als Parameter an ActionListener übergeben

Hier ist ein Beispielcode, um zu versuchen und deutlich zu machen, was ich tun möchte:

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"); 
     }); 
    } 

} 

Was ich tun möchte, die „sample_class“ übergeben, so dass die Aktion Hörer sie verwenden können.

So würde das Endergebnis so sein, so kann ich meine Klasse in den Hörern ...

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

Habe gelesen schon einige Fragen ähnlich wie diese, aber ich kann nicht wickeln mein voraus verwenden um es herum.

+0

Sie müssen keinen zusätzlichen Parameter hinzufügen, erstellen Sie einfach eine Klasse, die ActionListener implementiert, und legen Sie die gewünschten Variablen fest. – Tibrogargan

+0

Ah, ok. Macht Sinn. Ich nehme an, ich kann jetzt keinen Lambda benutzen, oder? – JacketPotatoeFan

+1

"Ich nehme an, es ist verlockend, wenn das einzige Werkzeug, das Sie haben, ein Hammer ist, alles so zu behandeln, als ob es ein Nagel wäre" - Abraham Maslow – Tibrogargan

Antwort

-1

Sie könnten ActionListener in Ihrer SomeClass implementieren und Ihr Event darin einkapseln.