単純なJFrameにGifを表示しようとしています。私は "LoadingGif"クラスを作成しましたが、GIFが出現した後にこのエラーメッセージjava.io.IOException : Stream closed
が1秒間表示されてから停止します。IOExceptionストリームがGifで終了する
私はLoadingGif.getInstance.runUI()
で、このクラスを呼び出し、クラスのソースコードは次のとおりです。私はこのストリームを閉じてしまった理由は、誰もが知ってい
public class LoadingGif {
private static LoadingGif instance = null;
private JFrame f;
private JLabel label;
private URL url;
private ImageIcon imageIcon;
private LoadingGif()
{
url = TraceaReq.class.getResource("/load.gif");
imageIcon = new ImageIcon(url);
label = new JLabel(imageIcon);
}
public void runUI()
{
f = new JFrame(RQTFGenDOORS.VERSION+" - Loading...");
f.getContentPane().add(label);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setLocationRelativeTo(null);
f.setResizable(false);
f.setVisible(true);
f.setAlwaysOnTop(true);
}
public void stopLoading(){
if(f.isDisplayable())
{
f.dispose();
}
}
public static LoadingGif getInstance()
{
if(instance == null)
{
instance = new LoadingGif();
}
return instance;
}
}
?
ありがとうございます!
どのようにこのクラスを使用していますか? –
'imageIcon = new ImageIcon(url);このコードは 'if(f.isDisplayable()){f.dispose();'のように表示されますが、label/new JLabel(imageIcon); 'ラベル/アイコンはイメージを非同期的に読み込みますフレームが表示可能になるとすぐにJVMにイメージのロードを停止させます。私はそれが問題だと思う。 1)すぐに助けを求めるには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 2)画像を取得する方法の1つは、[このQ&A](http://stackoverflow.com/q/19209650/418556)に表示されている画像にホットリンクすることです。 –
このクラスはシングルトンです。私は 'LoadingGif.getInstance.runUI()'を使ってmain()の最初のところでこのクラスを呼び出します。最後に 'LoadingGif.getInstance.stopLoading()'を呼び出します。 事はイメージですロードされ、gifが0.5秒でアニメーション化された場合、エラーメッセージが表示されます。 – Jooooris