当前位置: 首页 > 知识库问答 >
问题:

有没有办法知道JPanel是否已完成加载其内容?

仲鸿风
2023-03-14

我正在编写一个在运行时将卡片(JPanel)添加到CardLayout的应用程序。问题是卡上的一些组件加载速度比其他组件快,使其看起来有问题,并且在显示之前没有正确渲染。

我希望它在第一次展示时准备好。

我通过加载屏幕暂时解决了这个问题,它使线程Hibernate1500毫秒。有没有更有效的方法来知道面板上的所有内容是否都已加载?

private void showLoadingScreen() {
    final Component glassPane = getGlassPane();
    setGlassPane(loadingPanel);
    loadingPanel.setVisible(true);

    Thread thread = new Thread() {
        public void run() {
            try {;
                Thread.sleep(1500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            setGlassPane(glassPane);
        }
    };

    thread.start();
}

共有1个答案

宋腾
2023-03-14

在使用SwingWorker创建的后台线程中执行所有文件加载和数据操作。然后在执行SwingWorker之前,添加一个属性变更监听器。当属性变更事件newValue是SwingWorker。状态值。完成,那么你知道所有后台工作都完成了,你可以显示你的GUI。

请看一下Swing教程中的并发性,例如,请看一个类似问题的答案。

 类似资料:
  • 问题内容: 我有一个名为的方法的对象,该方法启动三个线程。 每个线程执行完毕后,如何获得通知? 有没有办法知道一个(或全部)线程是否已完成或仍在执行? 问题答案: 你可以通过多种方式执行此操作: 在主线程中使用以阻塞方式等待每个线程完成,或者 以轮询方式(通常不鼓励使用)检查,等待每个线程完成,或者 非常规的,对于每个有问题的线程,调用来调用对象中的方法,并对每个线程进行编程以在完成时抛出未捕获的

  • 我正试图在表格上做错误检查。我想看看一个电话号码是否有效,看它是否包含所有号码。有没有办法确定一个字符串中是否只有NMBER?

  • 问题内容: 是否可以 不 尝试加载就知道是否已加载Java类?尝试加载该类,但我不希望出现这种副作用。还有另一种方法吗? (我不想覆盖类加载器。我正在寻找一个相对简单的方法。) 问题答案: (感谢Aleksi)此代码: 产生: 请注意,示例类不在软件包中。完整的二进制名称是必需的。 二进制名称的一个示例是

  • 我正在使用Firebase实时数据库为我的Android应用程序存储和检索数据。在我的活动中,我使用从Firebase检索所有数据(例如:用户数据列表)。 我想显示一个进度条,只要数据没有完全从数据库中检索出来。如何检查是否全部检索到了所有数据,以便在加载数据后关闭进度条?

  • 问题内容: 我正在制定一个将函数用作范围参数()的指令。我需要知道该方法返回的结果是否为有角度的承诺(如果是,则在分辨率上会发生某些情况,否则会立即发生)。 现在,我正在测试是否存在,但是我想知道是否有更好的方法可以做到这一点。 问题答案: 您可以使用将对象包装为一个承诺(无论是否存在)。然后,您可以确定自己始终在兑现承诺。这应该简化随后处理结果的代码。 文档是在这里与$ Q。

  • 问题内容: 到目前为止,我所看到的所有示例都涉及阻塞(通过运算符)获取结果。 我当前的方法涉及传递指向结构的指针: goroutine完成时会写的内容。然后,只要方便就可以进行检查。您有更好的选择吗? 我真正想要的是Qt风格的信号槽系统。我有一个预感,解决方案看起来几乎是微不足道的(有 很多 未开发的潜力),但是我对这种语言还不十分了解。 问题答案: 您可以使用“逗号,可以”模式(请参阅其页面上的