【问题标题】:Append to JTextArea追加到 JTextArea
【发布时间】:2023-03-22 05:43:02
【问题描述】:

我正在制作服务器端应用程序,但是当我尝试将文本附加到 JTextarea 时,它不起作用。但是,它会打印到控制台。

在我添加serverSocket.accept() 行之前它运行良好。

这是我的代码:

try { 
    serverSocket=new ServerSocket(4545); 
    LogOutput.append("Seccessfuly connected\n" );  
    System.out.println("Seccessfuly connected\n" );              

    StartButon.setEnabled(false);

    while(true){
        LogOutput.append("waiting for client\n" );
        System.out.println("waiting for client\n" ); 

        serverSocket.accept();
        LogOutput.append("Client connected to server\n" );               
    }
}
catch(Exception e){
    LogOutput.append("cannot establish connection : "+ e +"\n" );
    StartButon.setEnabled(true);
}

【问题讨论】:

  • 你在哪里使用 JTextArea?

标签: java swing jtextarea serversocket event-dispatching


【解决方案1】:

您完全阻塞了 Swing 事件线程或 EDT。如果您希望 Swing GUI 与长时间运行的进程一起运行,请从后台线程中的 while (true) 块开始获取大部分代码。请阅读Concurrency in Swing 教程,了解为什么这很重要,以及如何使用SwingWorker 对象解决此问题。

【讨论】:

    【解决方案2】:

    从给定的代码 sn-p 和你的问题看来你正在寻找

    客户端连接到服务器\n

    要添加到您的 textArea 中。

    serverSocket.accept();
    LogOutput.append("Client connected to server\n" );       
    

    一旦你说 serverSocket.accept() 现在它会等待客户端连接到达,除非有一些客户端你的下一行代码不会被执行。 serverSocket.accept 是阻塞方法,启动你的客户端程序,你的服务器将开始处理下一行代码。

    来自docs

    public Socket accept() throws IOException
    

    侦听要与此套接字建立的连接并接受它。该方法会一直阻塞,直到建立连接。

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 2012-10-14
      相关资源
      最近更新 更多