Passing Variablen in eine Java-Action?
-
25-09-2019 - |
Frage
Gibt es eine Möglichkeit für mich Variablen in eine Action zu passieren, ohne sie als letzten Aufruf? Ich mag diese beiden Punkte innerhalb einer Art zeitlicher Art und Weise benutzen ... Ich habe versucht, Thread.sleep (), aber aus irgendeinem Grunde Netz nicht gut mit dem Rest des Programms. Dies ist das Format, das ich wirklich möchte, aber ich bin mir bewusst, dass es unmöglich sein könnte, es funktioniert. Ich bin offen für alle und alle Ratschläge. Dank!
(Es tut mir leid, wenn dies eine dumme Frage, ich habe eine Antwort gesucht, aber kann nicht scheinen, einen zu finden.)
public void timedMain(Point current, Point wanted){
ActionListener taskPerformer = new ActionListener(){
public void actionPerformed(ActionEvent evt){
System.out.println(wanted+" "+current);}};
actiontimer = new Timer(delay, taskPerformer);
actiontimer.start();}
Lösung
Sie können dies tun, was vermeidet die Parameter als endgültig erklärt.
public void timedMain(Point current, Point wanted) {
final Point c = current;
final Point w = wanted;
ActionListener taskPerformer = new ActionListener(){
public void actionPerformed(ActionEvent evt){
System.out.println(w + " " + c);}};
actiontimer = new Timer(delay, taskPerformer);
actiontimer.start();}
Oder Sie könnten die Arten von current
und wanted
so ändern, dass sie wandelbar Point
Inhaber waren, und haben die actionPerformed
Methode Blick auf die aktuellen Werte in den Halter.
Aber es gibt keine Möglichkeit, die innere Klasse zu erklären, so dass es zu einer Variable in einem umschließenden Methode Umfang vorgenommene Änderungen sehen kann ... wenn es das ist, was Sie zu tun versuchen.
Andere Tipps
Sie könnten ein paar Dinge tun
-
könnten Sie die anonyme Aktion Hörer auf eine (private static) innere Klasse, fördern und die Argumente an den Konstruktor übergeben
-
könnten Sie eine Funktion definieren, die eine anonyme Aktion Hörer gebaut, anstatt Inline es in Ihrem Code, und stellen Sie die Parameter für diese Funktion endgültig
Was ist los mit nur markiert sie ‚endgültig‘, wenn?