package com.myqq;import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class Server {
public Server() {
// TODO Auto-generated constructor stub
try {
ServerSocket serverSocket = new ServerSocket(9999);
Socket socket2 = serverSocket.accept();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JFrame frame = new JFrame();
frame.setBounds(200,200,400,400);
frame.setVisible(true);

}
public static void main(String[] args)
{
Server server = new Server();
}
}JFrame没有显示,如果先初始化JFrame后建立socket就有显示,这是为什么?

解决方案 »

  1.   

    在他还没有得到连接的时候,serverSocket一直阻塞在accept那里,只要有连接了才继续往下执行你把frame的那段代码拿到accept上面就好了。
      

  2.   

    用到图形界面的,需要多线程,才能保证前台后台同时运行;
    你现在 唯一的线程阻塞在accept那了,即使把frame的代码放前面,显示出来界面也死掉了。