1

やりたいこと: メイン スレッドの実行中に、メイン スレッドを妨害したり、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コンポーネントの操作が実行されます。どうすればいいですか?

4

1 に答える 1

2
于 2013-01-18T16:31:07.187 に答える