我正在做一个关于聊天应用程序的项目。我正在使用套接字。我正在创建这个JFrame,它为我提供了连接服务器或客户端的选项。当我运行我的选项JFrame(选择作为服务器或客户端运行)并按下服务器按钮时,我的一些代码会在动作侦听器中被跳过。我已经花了几个小时调试,我不知道为什么我的一些代码会被跳过。
private void serverBtnMtd() {
try {
System.out.println("Running server Method");//Testing
MyServer myServer = new MyServer();//server gets Created and shows up
myServer.initializeServer();//Skipped
myServer.setVisible(true);//Skipped
System.out.println("End Running server Method");//Testing
} catch (Exception e) {
e.printStackTrace();
}
}
动作侦听器
btnServer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
serverBtnMtd();
}
});
我的主要方法
public class MyMain {
public static void main(String args[]) {
ServerOrClient mainApp = new ServerOrClient();
mainApp.setVisible(true);
mainApp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
当我在没有选项JFrame的情况下运行我的服务器类时,一切都会运行。所有代码的跳过都发生在Action侦听器上。我做了一些println来测试我的所有代码是否都运行,并且只有“运行服务器方法”出现在我的命令行中。
答案 0 :(得分:1)
服务器通常具有无限循环。所以你的代码没有被跳过,只是新的MyServer没有完成恢复你的代码。将代码放在一个新的线程中。
答案 1 :(得分:0)
您需要添加:
setFocusable(true);
到你的构造函数