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();}
War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top