我正在填充我的 Java 小程序。我正在尝试让 serverSocket 与我的 java 小程序一起使用。一旦我添加了 try-catch,小程序中的所有其他元素都不会显示在小程序中。当我注释掉 try-catch block 时,其他元素又回来了。为什么会出现这种情况? 这是代码:
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();
}
}
}
最佳答案
Socket socket = server.accept();
是一种阻塞方法,意味着在建立某个连接之前,它将等待,因此 start
永远不会返回,所以用户界面不会更新
将套接字连接代码卸载到单独的线程。
请注意,根据本地计算机的安全设置,可能无法从小程序内建立这种连接。
此外,AWT 在大约 15 年前就被 Swing 取代,您可能会发现使用 Swing API 或 JavaFX 更容易,因为有更多基于社区的支持
关于java - 为什么try-catch不允许java小程序中的其他元素出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31236873/