3

URLから画像を読み込もうとしているのですが、実際には何もしていません。URLから画像を取得するために使用している方法は次のとおりです。

    public Image getImage(String url){
    try{
        System.out.println("gettingImage");
        return ImageIO.read(new URL(url));
    }catch(Exception e){
        e.printStackTrace();
        return null;
    }
}

System.out.println() を追加して、呼び出したときにメソッドが実際に実行されていることを確認しました。

渡す URL は次のとおりです: http://i3.kym-cdn.com/photos/images/masonry/000/349/917/065.png (これは有効な URL です)

私の出力はこれです:

gettingImage

'gettingImage' (私が追加した System.out.println() から) と表示されるだけで、実際には何らかの理由で画像が取得されません。スタックトレースはなく、その出力だけです。どんな助けでも大歓迎です。ありがとう。

4

3 に答える 3

4

メイン スレッド内から戻るまでに長い時間がかかる集中的なメソッドを決して呼び出さないでください。これにより、GUI がフリーズします。newSwingWorkerを作成し、その中でそのメソッドを呼び出します。このを参照してください。

于 2012-07-13T17:21:31.537 に答える
3

これを試して....

このプログラムは、画像が取得されたことを示すためSystem.outのものです。画像が取得されたことを証明するために、URLから返された画像を使用しています。

また、スレッドを使用して、プロセスの集中的な作業がEDT (Event Dispatcher Thread)UI を担当するものから除外されるようにしました。

Thread または SwingWorkerを使用する必要があります。そうしないと、EDT でプロセス集約的な作業を行うと、最終的にGUI が応答しなくなります...

public class UrlTest
{
    public static void main(String[] args)
    {
        new Thread (new Runnable()
        {
            @Override public void run()
            {
                try
                {
                    URL url = new URL("http://i3.kym-cdn.com/photos/images/masonry/000/349/917/065.png");
                    Image img = ImageIO.read(url);
                    System.out.println(img);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}
于 2012-07-13T18:06:59.550 に答える
2

これが機能しない理由の問題が見つかりました: 私のコードには何もありませんでした。インターネットが一瞬ちらつき続け、その小さなちらつきから回復できなかったためです。私は自分のインターネットがちらつき続けていることに気づいていませんでしたが、友人の 1 人に送信したとき、彼のコンピューターで完全に機能していたので、インターネット接続が原因であると思われます。すべてのアイデアに感謝します。

于 2012-07-14T13:26:38.847 に答える