java套接字和线程问题

时间:2010-06-05 17:35:00

标签: java sockets button multithreading

我正在使用Java编写一些套接字程序。 在这里我创建了一个按钮(创建服务器)..当我点击它时,它启动服务器...但我想在启动服务器后将按钮名称更改为(停止服务器)... 所以我这样做.. 但是当我按下启动服务器时它会启动并且按钮名称保持不变...

当客户端连接到它时,它会更改名称以停止服务器...

告诉我这段代码有什么问题?

这是我的一部分代码...

public void actionPerformed(ActionEvent ex)
{
    if(ex.getActionCommand() == "CreateServer")
    {
        bt1.setText("Stop Server");
        bt2.setEnabled(false);
        b5.setText("Server Started On Port " + tf2.getText());      
        System.out.println("Server started 1");
            create(Integer.parseInt(tf2.getText()));  //my func. to create server
        System.out.println("Server started 2");
    }       
}

和我的create()fucn。包含一些套接字和线程...所以告诉我这个问题是什么......

1 个答案:

答案 0 :(得分:2)

您可能正在使用AWT线程运行服务器。因此,这意味着此线程无法重新绘制您的帧,并且按钮标题不会更改。

为你的服务器创建一个新的Thread(你的按钮动作监听器中的代码):

Runnable serverRunnable = new Runnable()
{
    public void run()
    {
        create(Integer.parseInt(tf2.getText()));  //my func. to create server
    }
};
Thread serverThread = new Thread(serverRunnable);
serverThread.start();

执行此代码后,AWT Thread启动了一个新线程,并且不必自己运行服务器,并且可以继续重新绘制所需的框架或组件。