Java 为什么第二个JFrame不显示组件?

Java 为什么第二个JFrame不显示组件?,java,swing,jframe,jprogressbar,Java,Swing,Jframe,Jprogressbar,我有第一个JFrame,它工作得很好。当我按下一个按钮时,它应该显示一个JProgressBar框架,但我得到的是空的JFrame。我用手指打开它 p = new Progress("1/3"); p.setMax(2); p.setProgress(0, "Getting bytes..."); 有人知道为什么吗 编辑: 我将解释更多细节(因为有人误解并错误地更正了我的帖子)-在我的主课上,我开始

我有第一个JFrame,它工作得很好。当我按下一个按钮时,它应该显示一个JProgressBar框架,但我得到的是空的JFrame。我用手指打开它

                p = new Progress("1/3");
                p.setMax(2);
                p.setProgress(0, "Getting bytes...");
有人知道为什么吗

编辑: 我将解释更多细节(因为有人误解并错误地更正了我的帖子)-在我的主课上,我开始第一个JFrame:
newcrypt()
在Crypt类中,我注册了一个按钮ActionListener。单击会打开第二个JFrame,但它是空的:

                p = new Progress("1/3");
                p.setMax(2);
                p.setProgress(0, "Getting bytes...");

在Crypt类中,我注册了一个按钮ActionListener。单击它会打开第二个JFrame,但它是空的

从Swing侦听器调用的代码在事件调度线程(EDT)上执行。EDT负责喷涂回转部件。由于您的代码正在EDT Y9U上执行长时间运行的任务,因此在任务完成之前,您将阻止Swing绘制组件


您需要为长时间运行的任务启动一个单独的线程。或者更好的是,您可能应该使用
SwingWorker
。阅读Swing教程中的部分,该部分对这一点进行了更详细的解释,并提供了SwingWorker的工作示例。

当我按下按钮时,它应该显示一个JProgressBar
请向我们显示这段代码。你使用动作监听器吗?上次有人有
static
GUI组件;因此,两个框架共享字段变量。在哪里有按钮,侦听器在哪里?它打开框架-按钮工作。但它是空的。对我来说是有效的,可以从代码行p.setMax(2)中捕捉到重新绘制;p、 setProgress(0,“获取字节…”);我不上网,但我已经下载了文档