2014-06-23 2 views
1

최근에 나는 자바에서 클라이언트/서버 애플 리케이션을 개발하고있다.한 번에 두 개의 JFrame을로드

두 개의 클래스 인 Client.java와 Server.java가 있습니다. 둘 다 JFrame을 확장합니다. 내가 표시 할 서버와 클라이언트 모두를 기다리고 있었다

Server server = new Server(); 
Client client = new Client(); 

있지만 서버가 나타납니다 : 내 mainClass의 주요 방법은

, 내가 전화. 미리 감사드립니다.

편집 :

public class Server extends JFrame{ 
     public Server() 
     { 
      setTitle("Server"); 
      setSize(500,300); 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setVisible(true); 

      ServerSocket serverSocket; 
      try { 
       serverSocket = new ServerSocket(8000); 

       Socket socket = serverSocket.accept(); 

      } catch (IOException ex) { 
       System.out.println("error found"); 
      } 
     } 
    } 

    public class Client extends JFrame{ 

     public Client() 
     { 
      setTitle("Client"); 
      setSize(500,300); 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setVisible(true); 

      try { 
       Socket socket = new Socket("localhost",8000); 
      } catch (IOException ex) { 
       System.out.println("error found"); 
      } 
     } 
    } 


    public class Haha { 
     public static void main(String[] args) { 
      new Server(); 
      new Client(); 
     } 

    } 

하하는 BTW 내 주요 클래스입니다. 미리 감사드립니다! 그 클래스를 3 개의 다른 파일에 선언했습니다.

+1

코드를 게시하지 않으면 잘못된 정보를 알려 드릴 수 없습니다. 우리는 당신의 수업이 무엇을하는지 알 방법이 없습니다. – azurefrog

+0

@azurefrog : 제 수정 된 코드를 살펴보십시오. – user3689529

+0

이것은 다소 일반적인 설정입니다. 이걸 클라이언트와 서버 응용 프로그램으로 나누는 것이 좋을 것 같습니다. 응답 성있는 GUI를 원한다면 SwingWorker와 and invokeLater를 사용하는 방법을 이해해야한다. – BetaRide

답변

4

Swing 이벤트 스레드에서 연결을 수락하면이 동일한 스레드가 차단되어 후속 코드가 실행되지 않습니다. SwingWorker를 사용하여 백그라운드 스레드에서 블로킹 코드를 호출 할 수 있습니다. 자세한 내용은 SwingWorker tutorial을 확인하십시오.

+0

답변 해 주셔서 감사합니다. – user3689529