В настоящее время я разрабатываю приложение HTTP с использованием API-интерфейса HTTP Apache и использую графический интерфейс.После каждого запроса GET или POST я хочу обновить GUI TextArea несколькими сообщениями.Проблема в том, что эти сообщения появляются после выполнения всех запросов.
Я также заметил, что если я пишу сообщения на консоли после каждого запроса, сообщение появляется, но если я пишу в GUI, все сообщения появляются в конце.
Вот некоторый кодфрагменты:
Конструктор GUI:
public GUI() {
initComponents();
SetMessage.gui = this;
}
Класс SetMessage:
public class SetMessage implements Runnable{
public static GUI gui;
private String msg;
public SetMessage( String msg){
synchronized(gui){
this.msg = msg;
}
}
public void run() {
gui.setText(msg);
}
}
Класс запросов GET (каждый запрос выполняется потоком):
public class SendGetReq extends Thread {
private HttpConnection hc = null;
private DefaultHttpClient httpclient = null;
private HttpGet getreq = null;
private int step = -1;
private String returnString = null;
public SendGetReq(HttpConnection hc, DefaultHttpClient httpclient, HttpGet getreq, int step) {
this.hc = hc;
this.httpclient = httpclient;
this.getreq = getreq;
this.step = step;
}
@Override
public void run() {
// CODE
}
И класс HttpConnection (экземпляр этого класса создается, когда я нажимаю кнопку в графическом интерфейсе):
public class HttpConnection {
private DefaultHttpClient httpclient = null;
private HttpGet getreq = null;
private HttpPost postreq = null;
private SendGetReq tempGet = null;
// More fields
private void RandomMethod(){
//Initialize getreq
(tempGet = new SendGetReq(this, httpclient, getreq, 0)).start();
new SetMessage("Message").run();
}
О!И метод SetText в GUI:
public synchronized void setText(String msg){
if(!"".equals(msg)){
Date currentDate = new Date();
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(currentDate);
jTextArea1.append(calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND)+" --- "+msg+"\n");
}
}
Может кто-нибудь помочь мне с этой проблемой?Спасибо!}