アプリケーションの起動時にすべての 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 コンポーネントはレンダリングを開始しません。
それを「適切に」行う方法はありますか?