java中的线程问题
我制作了一个聊天应用程序,它使用服务器和客户端进行通信。 在服务器GUI上,我制作了一个“开始”按钮,它应该通过调用线程来运行服务器。 我的问题是,当我单击“开始”按钮时,另一个GUI窗口将启动,而不仅仅是更新旧的GUI窗口并启动服务器 这是我的密码: 线程代码:java中的线程问题,java,Java,我制作了一个聊天应用程序,它使用服务器和客户端进行通信。 在服务器GUI上,我制作了一个“开始”按钮,它应该通过调用线程来运行服务器。 我的问题是,当我单击“开始”按钮时,另一个GUI窗口将启动,而不仅仅是更新旧的GUI窗口并启动服务器 这是我的密码: 线程代码: public class SerTest implements Runnable{ @Override public void run(){ Server serv = new Server(); serv.setDe
public class SerTest implements Runnable{
@Override
public void run(){
Server serv = new Server();
serv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
serv.startRunning();
}
按钮侦听器代码:
start_server.addActionListener(
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
(new Thread((Runnable) new SerTest())).start();
}
});
我相信这就是您在actionPerformed中尝试执行的操作,假设您首先在SerTest中调用此代码
@Override
public void actionPerformed(ActionEvent e) {
//don't allow user to start server when it's already running
//should add something to re-enable this button for when the
//server stops.
((JButton) e.getSource()).setEnabled(false);
//create new Thread pointing Runnable to this instance of SerTest
new Thread(SerTest.this).start();
}
虽然我根本不用秋千。我认为你不允许在另一个线程上设置内容。我相信这一切都必须在网络上运行。我指的是
serv.setDefaultCloseOperation(JFrame.EXIT\u ON\u CLOSE)代码>在您的Runnable中。对于给定的代码,绝对是预期的行为!在按钮单击处理程序中,创建SerTest类的一个新实例,然后创建一个服务器类的新实例,该实例似乎是gui并启动它……为什么要在actionListener中创建一个新的SerTest对象?第二,当您创建SerTest类的对象时是否创建了一个新窗口?为什么您的服务器首先有一个gui?这使得事情变得比必要的更复杂。