やりたいこと: メイン スレッドの実行中に、メイン スレッドを妨害したり、swing コンポーネントをフリーズしたりせずに一連のアクションを実行したいので、メイン スレッドから強制的に実行を停止できます。そして、このアクションの 1 つはスイング コンポーネントを操作できます。
想像を助けるためのいくつかのコード:
public class Test extends JFrame{
public Test()
{
super("Test");
JButton button = new JButton("Stop!");
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
//STOP THE EXECUTION
}
});
this.add(button);
//START OF EXECUTION
System.out.println("FOO");
System.out.println("BAR");
button.setText("Hello");
System.out.println("THIS");
//END OF THE EXECUTION
this.pack();
this.setVisible(true);
}
}
スレッドのみを使用しようとしましたが、例外がスローされました。例外が何であるかを忘れましたが、基本的に、非 AWT スレッドなどからスイングコンポーネントを操作できないと書かれています。
その後、ThreadとswingUtilitiesの両方を使用してみましたが、実行後にswingコンポーネントの操作が実行されます。どうすればいいですか?