java - 为什么try-catch不允许java小程序中的其他元素出现?

标签 java applet try-catch

我正在填充我的 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/

相关文章:

java - SQL 检索和存储整数

Java 从二维数组制作 vector 。

java - 为找不到资源创建自定义异常 404 SPRING BOOT

Java 小程序在最新版本的 mac Firefox 中非常慢

java - 如何使用php变量作为java小程序的参数

c# - 处理异常和。首先防止它们发生 - C#

java - CREATE TABLE IF NOT EXISTS 在 UCanAccess 中引发错误

java - 为什么在此 java applet 教程代码中的循环中将线程优先级设置为最大?

java - 实现 try 和 catch block

java - 长时间尝试语句