如何在另一个对象的JTextArea中显示一个对象中的数据



我有一个名为handler的类,这个类处理来自浏览器的http请求,我想在另一个名名为HttpHeadersFrame的类的JTextArea中显示请求的http头!这就是我尝试过的

 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中没有收到任何消息!如有任何帮助,将不胜感激

首先,您的代码片段中缺少对Swing组件的正确使用。在使用构造函数中的requestTextArea字段之前,应该先对其进行初始化。此外,您还必须将其添加到带有声明的框架中

this.getContentPane().add(requestTextArea);

您应该将HttpHeadersFrame实例传递给Handler类,使该实例可见,即

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

requestMessage附加到该实例的textArea字段中即可。

processRequest方法中,您为每个传入请求创建一个新的HttpHeadersFrame。除非显示所有这些帧,否则将不断更新不可见的帧,而不是唯一可见的帧。因此,将一个可见的HttpHeadersFrame实例传递给Handler类iso以创建新实例,您的问题就会得到解决。

哦,请确保更新事件调度线程上的Swing组件。

相关内容

最新更新