2015-07-06 32 views
0

我正在填充我的Java小程序。我試圖讓serverSocket與我的Java小程序一起工作。一旦我添加了try-catch,小程序中的所有其他元素都不會顯示在小程序中。當我將try-catch塊註釋掉時,其他元素會回來。爲什麼會發生? 下面是代碼:爲什麼try-catch不允許java applet中的其他元素出現?

import java.applet.Applet; 
import java.awt.Button; 
import java.awt.TextField; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.ServerSocket; 
import java.net.Socket; 


public class App extends Applet { 

TextField input; 
TextField output; 

public void init() 
{ 

    setSize(500,500); 

} 

public void start() 
{ 

    this.input = new TextField(40); 
    this.output = new TextField(40); 
    this.output.setEditable(false); 
    Button b = new Button("send"); 

    this.add(b); 
    this.add(input); 
    this.add(output); 

    try{ 

     ServerSocket server = new ServerSocket(8000); 
     Socket socket = server.accept(); 
     DataInputStream inputFromClient = new DataInputStream(socket.getInputStream()); 
     final DataOutputStream outputToClient = new DataOutputStream(socket.getOutputStream()); 

     b.addActionListener(new ActionListener(){ 

      public void actionPerformed(ActionEvent arg0) 
      { 



      } 


     }); 



    }catch(IOException e){ 

     e.printStackTrace(); 

    } 


} 

} 

回答

3

Socket socket = server.accept();是一個阻塞方法,也就是說,直到某個連接後,它會等待,所以start不會返回,所以UI將不會被更新

關閉將套接字連接代碼加載到單獨的線程。

請注意,根據本地計算機的安全設置,可能無法從小應用程序內建立這種連接。

此外,AWT是由擺動一些超過15年前所取代,你可能會發現它更容易使用無論是搖擺API或的JavaFX由於有更多的以社區爲基礎的支持

+0

到MadProgrammer:謝謝你的幫助。我要編輯我的代碼。 – Tito

相關問題