从线程内部操作Swing组件

时间:2013-01-18 16:20:16

标签: java multithreading swing

我想这样做: 主线程运行时, 我想执行一系列操作而不会干扰主线程并冻结swing组件,我可以强制停止从主线程执行。其中一个动作可以操纵摆动组件。

一些有助于想象的代码:

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);
    }
}

我试图只使用Thread,它抛出异常,我忘记了异常是什么,但基本上它说我无法操纵非AWT线程中的swing组件或其他东西。

之后我尝试使用Thread和swingUtilities,但是他们在执行完成后执行swing组件操作。我该怎么做?

1 个答案:

答案 0 :(得分:2)