1

アプリケーションの起動時にすべての 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 コンポーネントはレンダリングを開始しません。

それを「適切に」行う方法はありますか?

4

0 に答える 0