Java swing组件被冻结

Java swing组件被冻结,java,swing,netbeans,client-server,Java,Swing,Netbeans,Client Server,我正在用netbeans制作一个服务器客户端应用程序项目。我用NetBeansGUI构建器在JFrame上制作了一些Jpanel和一些其他东西(按钮、文本字段、文本区域、菜单)。 当我按下new server按钮时,整个JFrame及其所有组件都被冻结,但服务器客户端部分在后台工作。我觉得线有点问题什么的, 但是我还没有真正理解我应该做什么。问题可能是服务器客户端代码实际上不是在后台工作,而是在Swing事件线程上工作。您可以使用一个方法来测试这一点:SwingUtilities.isEvent

我正在用netbeans制作一个服务器客户端应用程序项目。我用NetBeansGUI构建器在JFrame上制作了一些Jpanel和一些其他东西(按钮、文本字段、文本区域、菜单)。 当我按下new server按钮时,整个JFrame及其所有组件都被冻结,但服务器客户端部分在后台工作。我觉得线有点问题什么的,
但是我还没有真正理解我应该做什么。

问题可能是服务器客户端代码实际上不是在后台工作,而是在Swing事件线程上工作。您可以使用一个方法来测试这一点:
SwingUtilities.isEventDispatchThread()

此外:

  • 你是在用一个SwingWorker做背景工作吗
  • 您是否正在使用后台线程执行任何
    join()
    调用
  • 您是否正在等待SwingWorkers
    get()
    方法

您代码的详细信息可能会帮助我们为您提供更具体的建议。要了解您应该做什么,请阅读,

问题可能是您的服务器客户端代码实际上不是在后台工作,而是在Swing事件线程上工作。您可以使用一个方法来测试这一点:
SwingUtilities.isEventDispatchThread()

此外:

  • 你是在用一个SwingWorker做背景工作吗
  • 您是否正在使用后台线程执行任何
    join()
    调用
  • 您是否正在等待SwingWorkers
    get()
    方法

您代码的详细信息可能会帮助我们为您提供更具体的建议。要了解您应该做什么,请阅读,

我设法找到了我的问题。我犯了一个愚蠢的错误。当我想启动服务器线程时,我调用了run方法而不是start方法。这就是为什么它被冻住了。不过,谢谢您的建议。@user1707095:我的建议是正确的:直接调用
run()
,正如我所怀疑的,您正在调用事件线程上的长时间运行的代码。我设法找到了我的问题。我犯了一个愚蠢的错误。当我想启动服务器线程时,我调用了run方法而不是start方法。这就是为什么它被冻住了。不过,谢谢您的建议。@user1707095:我的建议是正确的:直接调用
run()
,您就是在调用我怀疑的事件线程上的长时间运行的代码。