我正在使用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。包含一些套接字和线程...所以告诉我这个问题是什么......
答案 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启动了一个新线程,并且不必自己运行服务器,并且可以继续重新绘制所需的框架或组件。