【问题标题】:Java swing components are got frozenJava swing 组件被冻结
【发布时间】:2012-09-29 15:38:37
【问题描述】:

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

【问题讨论】:

    标签: java swing netbeans client-server


    【解决方案1】:

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

    还有:

    • 您是否使用 SwingWorker 来完成后台工作?
    • 您是否正在使用后台线程进行任何 join() 调用?
    • 您在等待 SwingWorkers get() 方法吗?

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

    【讨论】:

    • 我设法找出了我的问题。我犯了一个愚蠢的错误。当我想启动服务器线程时,我调用了 run 方法而不是 start。这就是它被冻结的原因。不过,感谢您的建议。
    • @user1707095:我的建议是正确的:通过直接调用run(),您正在调用事件线程上的长时间运行代码,正如我所怀疑的那样。
    猜你喜欢
    • 2012-06-26
    • 2011-03-12
    • 2012-09-25
    • 2016-12-18
    • 2013-11-05
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多