Java 如何使蜡染在背景中开始GVT渲染?

Java 如何使蜡染在背景中开始GVT渲染?,java,swing,svg,batik,Java,Swing,Svg,Batik,我试图让我的应用程序在应用程序启动时呈现所有SVG图像,然后显示主框架。当我启动应用程序时,它会加载几个SVG图像。不幸的是,目前它显示空白帧,然后渲染图像 我想替换: MyCustomFrameWithSVG frame = new MyCustomFrameWithSVG(); frame.setVisible(true); 比如说: MyCustomFrameWithSVG frame = new MyCustomFrameWithSVG(); Renderer renderer = n

我试图让我的应用程序在应用程序启动时呈现所有SVG图像,然后显示主框架。当我启动应用程序时,它会加载几个SVG图像。不幸的是,目前它显示空白帧,然后渲染图像

我想替换:

MyCustomFrameWithSVG frame = new MyCustomFrameWithSVG();
frame.setVisible(true);
比如说:

MyCustomFrameWithSVG frame = new MyCustomFrameWithSVG();
Renderer renderer = new Renderer(30, frame);

public class Renderer extends GVTTreeRendererAdapter {

    int svgCanvasToLoad;
    MyCustomFrameWithSVG frame;

    public Renderer(int svgCanvasToLoad, MyCustomFrameWithSVG frame) {
        this.svgCanvasToLoad = svgCanvasToLoad;
        this.frame = frame;
    }

    @Override
    public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
        --svgCanvasToLoad;

        if (svgCanvasToLoad == 0) {
            frame.setVisible(true);
        }
    }
}
如果我执行以下操作,则后面的代码有效:

frame.setVisible(true);
frame.setVisible(false);
但我不想这样做。 如果不显示帧,SVG组件将不会开始渲染


有没有办法“正确”执行此操作?

不要阻止EDT(事件调度线程)-发生这种情况时,GUI将“冻结”。而是为长时间运行的任务实施
SwingWorker
。有关更多详细信息,请参阅。我不阻止EDT。我在应用程序加载时显示启动屏幕。