JFrame打开空白,运行循环,然后显示组件

时间:2016-11-15 04:59:46

标签: java swing loops user-interface

好的,所以这个问题一直困扰着我。在有人评论它之前,是的,我已经使jframe可见,并且我已经添加了我需要的所有组件。此外,在GUI设置为可见并调用activate()之前,所有组件都已添加好。

所以我试图运行几行simeple代码。:

        g.setVisible(true);
        g.activate();

足够简单。 g是一个由我制作的GUI制作的对象,它扩展了JFrame。而activate()是一个运行无限循环的方法,它只会做很多事情,直到用户告诉它退出。但是,当程序到达g.setVisible()行时,它会打开一个JFrame,它是我指定的大小但是完全没有任何东西。然后它移动到g.activate();目前运行特定量的迭代和停止。在这一点上,它最终决定它可以返回并显示我的GUI。问题在于GUI应该通过active()的循环进行更新,并让用户了解正在发生的事情。

如果您需要更多详细信息并且事先感谢您,请与我们联系。

1 个答案:

答案 0 :(得分:3)

在许多不同的UI框架中,您调用的方法通常会对某些工作进行排队,而不是立即执行。从您的描述中,似乎setVisible()可能正在创建本机窗口,但随后排队组件的呈现。由于此代码(可能)在UI线程中运行,因此在运行activate()之前,它不会执行排队的工作。

永远不要在UI线程上运行长时间运行的任务。在Swing中,您可以使用SwingWorker或显式创建后台线程。