2012-02-17 94 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

相关问题