这是服务器的一个控制窗口,开启按纽的事件 
public void actionPerformed(ActionEvent e){ 
Server s = new Server(); 
try{ 
s.start();//开启服务器 
start.setEnabled(false);//这是开启服务的按纽 (禁用) 
stop.setEnabled(true);//关闭服务按纽 (启用) 
System.out.println(9); 
s.chatConnect();//这是服务器开启后等待客户端连接(死循环) 
}catch(Exception ex){ 
txtarea.setText("端口已被使用了,请关闭相关程序再运行!"); 


点了开启按纽,输出了9  为什么按纽没被禁止和启用,而且整个控制窗口卡在那,我把等待客户端连接那句话注释了  就能达到效果, 
为什么?谁知道,告诉我下 ```困惑中...... 
既然输出9了  应该前面的都得到执行了啊,为什么没效果.

解决方案 »

  1.   

    s.chatConnect();
    是死循环,界面线程阻塞在该方法内。
    如果的确要实现类似功能,可以再启动一个线程。
      

  2.   

    public void actionPerformed(ActionEvent e) 这个函数占用UI线程,并且在下面这句话停止循环,未执行结束
    s.chatConnect();//这是服务器开启后等待客户端连接(死循环) 下面这两个命令都在UI线程排队,但是actionPerformed不结束,是不会真正执行它们的
    start.setEnabled(false);//这是开启服务的按纽 (禁用)
    stop.setEnabled(true);//关闭服务按纽 (启用) 解决办法如1,2楼所讲
      

  3.   

    替换成
     new Thread(){
     public void run(){
    s.chatConnect(); 
     }
     }.start();