2010-06-20 4 views
23

Für das Leben von mir kann ich nicht finden, Details zu Java Swing Actions zu finden: '(Als ich auf sie stieß, erkannte ich sofort ihre Nützlichkeit. Bis jetzt war alles einfach zu arbeiten. Jetzt bin ich mit einer kleinen Sache fest : wie führe ich sie manuell ich durch Code bedeuten Beachten sie, dass ich über die GUI Netbeans bin Gebäude (wenn das einen Unterschied macht) ich habe so weit kommen, wie:?.Wie kann ich manuell eine Aktion im Wechsel aufrufen?

Application a = Application.getInstance(JPADemoApp.class); 
ApplicationContext ctx = a.getContext(); 
ActionMap am = ctx.getActionMap(JPADemoView.class, this.app); 
Action act = am.get("fetchOrders"); 

(ich alles auf, schrieb So, jetzt getrennte Leitungen

Debugging) zu vereinfachen ich einen gültigen Verweis auf die Aktion haben. nun, wie starte ich es?

Antwort

8

Wenn Sie Ihre Aktion manuell ausführen möchten, können Sie eine ActionEvent generieren und diese an die actionPerformed-Methode übergeben, die Ihre Action implementieren muss, da sich die Action-Schnittstelle um ActionListener erweitert.

+2

ich auf diese Frage kam wieder, und Ihre Antwort ist - meiner Meinung nach - detaillierter als die eines von @ b1nary.atr0phy. Auch wenn es mehr Upvotes gibt, werde ich dieses akzeptieren. Ich denke, der andere zieht mehr Stimmen an, da es kopierbar ist. Vielleicht würde ein Code-Sample diese Antwort verbessern? – exhuma

+0

Auf jeden Fall wäre ein Codebeispiel praktisch - nicht um Copy/Paste-Programmierung zu unterstützen, aber es würde das Konzept für einen Programmierer verständlicher machen. – Suma

28

Sie können einfach die Methode Aktion Veranstaltung direkt aufrufen:

for(ActionListener a: buttonExample.getActionListeners()) { 
    a.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null) { 
      //Nothing need go here, the actionPerformed method (with the 
      //above arguments) will trigger the respective listener 
    }); 
} 
+0

Sie können die leeren geschweiften Klammern entfernen. Siehe http://tinybrain.de/1007469 –

+0

Dieser ist viel besser und einfacher: https://stackoverflow.com/a/5109301/540552 –