Swing线程通信

时间:2013-02-22 14:22:22

标签: java multithreading swing

我正在创建一个小型swing应用程序,它绘制文件中给出的一组点。指南建议我为GUI调用一个新线程,我使用了以下代码。

java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new View().setVisible(true);
        }
    });

该应用程序中的一个场景是打开一个文件(使用JFileChooser完成)。

private void openMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
    int returnVal = fileChooser.showOpenDialog(this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file = fileChooser.getSelectedFile();
        //some heavy operations
    } else {
        System.out.println("File access cancelled by user.");
    }
}

在继续绘制点之前,需要完成一些繁重的操作。

我的问题是,建议在GUI主题中放置重代码吗?是否可以将文件对象发送到主线程进行处理并将结果发送到GUI线程?

请注意,我不知道Java Threading API。

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

如果长时间运行任务的结果修改了Swing组件,则可以使用SwingWorker。有关详细信息,请参阅Worker Threads and SwingWorker