Swing Runnable с параметрами

Я хотел бы запустить новый поток Swing и передать в них параметр. Что-то вроде этого:

String str;

SwingUtilities.invokeLater(new Runnable() {
public void run() {
    Play game = new Play(this.str);
        game.setVisible(true);
    }
});

Я нашел ответ, как передать параметр в поток, но я не уверен, как восстановить его для моей необходимости. Спасибо за идеи.

2 ответа

Решение

В качестве альтернативы, ваш аноним Runnable может получить доступ к последним полям в прилагаемой области видимости:

final String str = "one";

SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        Play game = new Play(str);
        game.setVisible(true);
    }
});

Ты не можешь Вместо этого создайте новую Теаду.

Изменить: Вот некоторый код, так как вы в замешательстве.

import javax.swing.SwingUtilities;

public class Main {
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new MyThread("Stackru"));
  }

  private static class MyThread extends Thread {
    String text;

    public MyThread(String text) {
      this.text = text;
    }

    @Override
    public void run() {
      System.out.println(this.text);
    }
  }
}
Другие вопросы по тегам