执行其他任务后将字符串追加到 JText 区域
String append to JText Area after do other task
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();
}
}
只有在我启动服务器和客户端连接后,所有字符串才会附加到文本区域。所以我想一步一步地将它显示为我的代码。怎么解决?
您正在阻塞事件调度线程,阻止它更新屏幕。
查看 Concurrency in Swing 了解更多详情。
我建议您使用 SwingWorker
在后台线程中执行套接字代码,并使用 SwingWorker
的功能安全地更新 UI。有关详细信息,请参阅 Worker Threads and SwingWorker
类似于
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();
}
}
只有在我启动服务器和客户端连接后,所有字符串才会附加到文本区域。所以我想一步一步地将它显示为我的代码。怎么解决?
您正在阻塞事件调度线程,阻止它更新屏幕。
查看 Concurrency in Swing 了解更多详情。
我建议您使用 SwingWorker
在后台线程中执行套接字代码,并使用 SwingWorker
的功能安全地更新 UI。有关详细信息,请参阅 Worker Threads and SwingWorker
类似于