Java 初始化主GUI时可见JProgressBar

Java 初始化主GUI时可见JProgressBar,java,swing,splash-screen,jprogressbar,Java,Swing,Splash Screen,Jprogressbar,我正在为我正在进行的一个项目构建一个相当复杂的GUI。重要的是,它包含(除其他外)一个JTabbedPane,其中包含12个以上的复杂GUI组件窗格 我试图做的是在实例化这些窗格时显示一个JProgressBar(创建和配置;除了实际显示之外的所有操作)。实际上,我希望最终的结果与Eclipse启动屏幕类似: 以下是(更新为包含SplashScreen)我尝试执行的伪代码: ProgramManager: private setupGUI() { mainGUI = new MainG

我正在为我正在进行的一个项目构建一个相当复杂的GUI。重要的是,它包含(除其他外)一个
JTabbedPane
,其中包含12个以上的复杂GUI组件窗格

我试图做的是在实例化这些窗格时显示一个
JProgressBar
(创建和配置;除了实际显示之外的所有操作)。实际上,我希望最终的结果与Eclipse启动屏幕类似:

以下是(更新为包含SplashScreen)我尝试执行的伪代码:

ProgramManager:
private setupGUI() {
    mainGUI = new MainGUI(); // only instantiates internal JFrame field
    mainGUI.setup();
}

MainGUI:
public void setup() {
    //create and configure progress bar
    final SplashScreen ss = SplashScreen.getSplashScreen();
    JProgressBar jpb = new JProgressBar(){
        Graphics g = ss.createGraphics();
        @Override
        public void paint(Graphics pG) {
            // TODO Auto-generated method stub
            super.paint(g);
        }
    };
    jpb.setValue(0);        
    setup1stTab();
    //update Progress
    setup2ndTab();
    //update progress
    etc....
    ss.close();
}

请让我知道这是不可能的,或者如果我只是做错了。我环顾四周,看到了一些关于线程/
SwingWorker的提到,但是在把它和观察者/可观察的东西(承认只有一点)弄得一团糟之后,我仍然无法理解它。

要获得类似于Eclipse splash的东西,请参见
java.awt.SplashScreen
。一旦图像显示在屏幕上,就可以调用获取

..启动屏幕覆盖图像的图形上下文(作为Graphics2D对象),允许您在启动屏幕上绘制

在上面绘制进度条。

假设在EDT(事件调度线程)中调用setup(),则该代码将正常工作

要在EDT中调用方法,请执行以下操作:

    SwingUtilities.invokeLater(new Thread() {
        @Override
        public void run() {
            setup();
        }
    };

我没法让它工作。。。我将manifest选项放在:
SplashScreen Image:files/cpuilogoa.gif
中,然后重写我的ProgressBar的paint()方法来绘制SplashScreen的图形…但没有骰子。这是正确的方法吗?@Ben请在你的问题中编辑代码等。我可能会对此发表评论,但当“文本”阅读代码时,我的大脑会旋转。另外,顺便说一句,你是如何在注释中获得换行符的?他们认为换行符在“快速”注释中是不合适的呸,骗子。让我的强迫症变得疯狂。。。不管怎样,还有新的东西。你注意到文档中提到的“当第一个AWT/Swing窗口可见时自动隐藏”的部分了吗?引用文件,由我强调。我提到这一点的原因是“无骰子”并没有提供任何有用的信息&上面的代码片段并没有完全说明屏幕上是否有一个GUI元素可见。你可能会告诉我情况是否如此,但更好的解释方法是使用。也请先从运行时命令行选项中尝试,并确认您正在这样做。实际上我错过了,谢谢。我必须找到其他方法来实现这一点,因为我的程序有两个小窗口供用户在加载主屏幕之前通过。还有,谢谢你的帮助!我是SO新手,正在尽可能快地学习诀窍。好的,排除了
SplashScreen
:(我建议在“splashscreen+Java”上进行搜索,以找到用于创建自定义splash的最佳代码。到处都是这些代码。但要小心使用Swing的任何代码。这突出表明代码作者是创建splashscreen的业余爱好者。原始代码应该是纯AWT(就像Oracle的
SplashScreen
implementation)。(但显然,你需要在Swing中找到进度条。)好的,我会去搜索。谢谢你的帮助!