2012-02-17 98 views
0

我有一個名爲處理程序的類,並且此類處理來自瀏覽器的http請求,並且我想在另一個名爲HttpHeadersFrame的類的JTextArea中顯示請求的http標題!這是我已經嘗試過如何顯示另一個對象的JTextArea中的一個對象的數據?

public class Handler 
{ 
    HttpHeadersFrame headersFrame; //This frame contains JTextArea component 
    private Request request = null; 
    public String requestMessage; 
    private Socket socket = null; 

    public Handler(Socket socket) 
    { 
     this.socket = socket; 
     this.headersFrame = new HttpHeadersFrame(); 
     headersFrame.setVisible(true); 
    } 

    public void processRequest() 
    { 
     requestMessage = request.toString(System.getProperty("line.separator")); 
     headersFrame.getRequestTextArea().append(requestMessage); 
    } 
} 

當我運行代理時,我在JTextArea中沒有收到任何消息!任何幫助,將不勝感激

+0

我看不到代理服務器的一些問題,eeeerrrrrrhrttt你有加載代理服務器後面的數據的問題.... – mKorbel 2012-02-17 08:32:06

回答

1

首先,在代碼片段中缺少正確使用Swing組件。 在使用它之前,您應該在構造函數中初始化requestTextArea字段。 ,你也必須添加它與語句

this.getContentPane().add(requestTextArea); 

你應該通過HttpHeadersFrame實例處理程序類框架,使這個例子可見,即

headersFrame = new HttpHeadersFrame(); 
headersFrame.setVisible(); 

和追加requestMessage此實例的文本區域字段將起作用。

+0

它的工作原理 - 消息正在JTextArea中顯示,但當我嘗試運行代理時彈出了很多headerFrame!如何解決這個問題? – Xris 2012-02-17 11:55:29

+0

您正在使用processRequest()方法的每個調用創建一個新的HttpHeadersFrame()實例。刪除該行並在Handler類的構造函數中初始化它。好? – Juvanis 2012-02-17 12:01:00

+0

我做到了!抱歉,我忘記修改郵件中的代碼!許多httpHeadersFrames仍然彈出! – Xris 2012-02-17 12:16:21

1

在您的processRequest方法你創建一個新的HttpHeadersFrame對每個傳入的請求。除非您顯示所有這些框架,否則您將不斷更新一個不可見的框架,而不是唯一可見的框架。因此,將一個可見的HttpHeadersFrame實例傳遞給您的Handler類iso,以創建新實例並解決您的問題。

呵呵,請確保你更新了Event Dispatch Thread上的Swing組件。

+0

你是什麼意思將一個可見的HttpHeadersFrame實例傳遞給你的Handler類?你會發佈一個例子嗎? Thanx – Xris 2012-02-17 07:10:14

+0

你說你沒有看到任何消息。您應該將引用傳遞給您可見的'HttpHeadersFrame'到您的處理程序,每次處理請求時在您的處理程序中創建一個新的 – Robin 2012-02-17 07:33:02

+0

它的工作原理 - 消息正在JTextArea中顯示,但是當我試圖在JTextArea中顯示這麼多headerFrame時運行代理!如何解決這個問題? – Xris 2012-02-17 11:55:54

相關問題