>>214>>218>>227>>232
イベントディスパッチスレッドはシングルスレッドだから固まるんですね。
(知ったように書いていますが実はまだ危ういです)
それだから actionPerformed(ActionEvent); でスレッドを作って test() をよびだすんだと
今やっと分かりました。(スレッド越しと言うのは、一つのスレッド実行中に新しい別の
スレッドを作ることを指すのでしょうか?)
SwingUtilities.invokeLater(...); が必要か、な議論はルールだから守らなきゃくらいしか
自分には分かりませんでしたが、Runnable を実装したクラスをイベントディスパッチ
スレッドに渡して(安全に?)スレッドを起こしてもらうためのものなんですかね?
でも、とりあえず使い方は分かりました。無事動きましたしほんとに助かりました。

また、余計な話ですが、内部クラスからローカル変数を参照するのに final が必要でも、
イスタンスフィールドならそのまま参照できるのを知って自分の素人さも痛感しました。
なぜそうなるのか、また自分で調べてみます。そして書き方もいろいろあるのが面白くて
楽しかった。深い人に教えてもらえて嬉しかったです。余裕ができたら SwingWorker も
知りたいですが、208さんが言った Swing 本も近々探して早く勉強したいです。
ありがとうございました。