启动套接字连接的线程并在Frames中绘制有关它的信息

时间:2011-11-20 16:51:57

标签: java multithreading sockets frame

我正在努力研究java程序。

我的想法: 主类启动套接字连接的线程,主类也使用GUI启动Frame。

package dialogsubsystem2;

import InternetConnection.SocketConnectionThread;

/**
 *
 * @author ACER
 */
public class DialogSubsystemLauncher {

    public SocketConnectionThread connectionSocket = new SocketConnectionThread("192.0.0.100", 2002);

    public DialogSubsystemLauncher() {

        /* Create and display the form */

        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new DialogSubsystemLayoutFrame().setVisible(true);                
            }
        });        

        connectionSocket.start();        
    }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

       DialogSubsystemLauncher dlgLnch = new DialogSubsystemLauncher();


    }
}

创建的Frame根据用户的请求启动另一个帧。

我想在所有Frame的状态栏上显示有关套接字连接的信息(来自套接字连接线程)。 但我不能从Frames访问套接字连接线程。 我该如何解决这个问题? 我应该如何启动套接字连接线程以从任何帧访问它?

2 个答案:

答案 0 :(得分:1)

您需要其中一个对象具有对另一个的引用。我会指向具有线程反射的帧(因为线程有时可能被I / O阻塞)。

只需让Frame的构造函数接受一个线程对象并传递你创建的那个(或者为它添加一个set方法)。

编辑:

回答评论中的陈述。

您创建的其他类(框架)需要传递参考。

public class DialogSubsystemLayoutFrame extends JFrame {
  // You store the reference here.
  private SocketConnectionThread socketConnection = null;

  public DialogSubsystemLayoutFrame(SocketConnectionThread socket) {
    this.socketConnection = socket;
  }
}

从那里,你可以在课堂的任何地方使用this.socketConnection来操作它。

答案 1 :(得分:0)

创建自己的类,扩展Frame并在该类中初始化Socket线程。