执行其他任务后,字符串将附加到JText区域

时间:2015-06-02 03:42:39

标签: java swing sockets append jtextarea

public void doConnect(){
        try{
            statusArea.append("Starting server.....\n");
            serverSocket = new ServerSocket(5555);
            statusArea.append("Server started.\n");
            statusArea.append("Waiting for client connection....\n");
            socket = serverSocket.accept();
            statusArea.append("Client connected.\n");
            inStream = new ObjectInputStream(socket.getInputStream());
        } catch (IOException e){
            e.printStackTrace();
        }
    }

只有在启动服务器和客户端连接后,才会将所有字符串附加到文本区域。所以我希望它一步一步显示为我的代码。如何解决?

1 个答案:

答案 0 :(得分:2)

您正在阻止事件调度线程,阻止它更新屏幕。

请查看Concurrency in Swing了解详情。

我建议您使用SwingWorker在后​​台线程中执行套接字代码,并使用SwingWorker的功能安全地更新UI。有关详细信息,请参阅Worker Threads and SwingWorker

this for example

这样的东西