带参数的Swing Runnable

时间:2013-04-14 09:02:53

标签: java swing runnable event-dispatch-thread invokelater

我想运行新的Swing线程并将参数传递给它们。 像这样:

String str;

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

我找到了answer, how to pass a parameter into thread,但我不确定如何根据我的需要重建它。 谢谢您的想法。

2 个答案:

答案 0 :(得分:3)

或者,您的匿名Runnable可以访问封闭范围内的最终字段:

final String str = "one";

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

答案 1 :(得分:0)

你做不到。改为换新Thead

编辑:这是一些代码,因为你很困惑。

import javax.swing.SwingUtilities;

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

  private static class MyThread extends Thread {
    String text;

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

    @Override
    public void run() {
      System.out.println(this.text);
    }
  }
}