为什么我的部分ActionListener代码被跳过?

时间:2016-05-07 05:34:49

标签: java sockets actionlistener

我正在做一个关于聊天应用程序的项目。我正在使用套接字。我正在创建这个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来测试我的所有代码是否都运行,并且只有“运行服务器方法”出现在我的命令行中。

2 个答案:

答案 0 :(得分:1)

服务器通常具有无限循环。所以你的代码没有被跳过,只是新的MyServer没有完成恢复你的代码。将代码放在一个新的线程中。

答案 1 :(得分:0)

您需要添加:

setFocusable(true);

到你的构造函数