Java(graphics2D)-简单双缓冲区JFrame加载屏幕

Java(graphics2D)-简单双缓冲区JFrame加载屏幕,java,load,jframe,splash-screen,doublebuffered,Java,Load,Jframe,Splash Screen,Doublebuffered,我有一个类来更新一个同步到歌曲的组件。当我第一次运行它时,加载歌曲需要一段时间,然后在加载时逐段显示图形 我想知道当JFrame同时加载我的剪辑和组件的图形时,是否/如何让它显示一个加载屏幕 而且,“stageComponent.setDoubleBuffered(true)”似乎什么也不做 public static void main(String[] args) { loadSong(SONG_NAME); JFrame frame = new JFrame(TITLE)

我有一个类来更新一个同步到歌曲的组件。当我第一次运行它时,加载歌曲需要一段时间,然后在加载时逐段显示图形

我想知道当JFrame同时加载我的剪辑和组件的图形时,是否/如何让它显示一个加载屏幕

而且,“stageComponent.setDoubleBuffered(true)”似乎什么也不做

public static void main(String[] args)
{
    loadSong(SONG_NAME);

    JFrame frame = new JFrame(TITLE);

    stageComponent = new StageComponent();
    stageComponent.setDoubleBuffered(true);
    frame.add(stageComponent);

    frame.setVisible(true);

    // If my stuff is loaded then start it all?
    if (stageComponent.isShowing() && clip.isOpen()) {
        Timer t = new Timer(TIME_DELAY, null);

        final long initialTime = System.currentTimeMillis();

        ActionListener stageListener = new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                stageComponent.playSequences((int)(System.currentTimeMillis() - initialTime));
            }
        };
        t.addActionListener(stageListener);

        // This will play song and start timer at basically the same time right?
        clip.start();
        t.start();
    }
}

提前谢谢

基本前提是有第三个窗口。您可以在后台进程中加载音乐,并显示一个漂亮的启动/消息屏幕。完成后,您将显示主屏幕。请记住,您需要在事件的上下文中与UI交互。好的,我如何知道音乐何时加载完毕?“clip.isOpen()或clip.isActive()”?那么图形加载呢。“setDoubleBuffered”似乎不起作用……没有真正的方法知道UI何时会在屏幕上完全实现。您最好希望知道您何时加载了任何资源(如图像)
setDoubleBuffered
只会影响组件更新的质量