2014-06-23 109 views
1

最近我正在開發java中的客戶端/服務器應用程序。一次加載兩個JFrame

我有兩個類,Client.java和Server.java。它們都擴展JFrame。

在我mainClass的主要方法,我稱之爲:

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

我所期待的服務器和客戶端展現出來,但唯一的服務器出現了。 在此先感謝。

編輯:

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

這是一個非常不尋常的設置。我想要分解成客戶端和服務器應用程序。如果你想擁有一個響應式的圖形用戶界面,你就必須瞭解如何使用'SwingWorker'和'invokeLater'。 – BetaRide

回答

4

通過在您的Swing事件線程中接受您的連接,您將阻止該同一線程阻止後續代碼的運行。看看使用SwingWorker來幫助您在後臺線程中調用阻止代碼。請查看SwingWorker tutorial獲取更多信息。

+0

感謝您的回覆! – user3689529