0

ImageIcon().GetImage() に問題があります

奇妙なことは、それが機能してマップが表示されたウィンドウが表示される場合と、そうでない場合があることです。他のコンピューターでも問題なく動作しますが、私のコンピューターでは動作しません!

Javaの再インストール、IntelliJの再インストール、ファイアウォールの無効化など、すべてを試しましたが、役に立ちませんでした。また、C# で同様のプログラムを作成しましたが、これは完全に機能するため、パーミッション エラーではないと思います。また、完全に動作するオンボード グラフィックス カードを備えた基本的な Windows XP システムでもテストしました。

これが私のコードです:

public class main {

public static void main(String[] args) {
    System.out.println("Running main..");
    try
    {
        URL url = new URL("http://maps.googleapis.com/maps/api/staticmap?center=-33.80382155278416,18.567184266922002&zoom=17&size=1024x1024&maptype=hybrid&sensor=false&format=png&key=AIzaSyCVnp9iTXRSS3ZE5FjzF7uNZavazWhLko4");
        Image img=new ImageIcon(url).getImage();
        System.out.println("INFO :"+img);
        new ImageFrame(img);

    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

public static class ImageFrame extends JFrame{

    public ImageFrame(Image img){

        setPreferredSize(new Dimension(540, 480));
        setaImg(img);
        ImagePanel somePanel = new ImagePanel(540, 480);
        add(somePanel);
        setVisible(true);
    }

    private Image aImg;

    public Image getaImg() {
        return aImg;
    }

    public void setaImg(Image aImg) {
        this.aImg = aImg;
    }

    public class ImagePanel extends JPanel{

        public ImagePanel(int width, int height){
            setPreferredSize(new Dimension(width, height));
        }

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(getaImg(), 0, 0, null); // see javadoc for more info on the parameters
        }
    }



}

 }

デバッガーのステップを実行しましたが、次の行で停止します。

Image img=new ImageIcon(url).getImage();

しかし、エラーがなければ、永遠にハングします。

なぜそれが私のシステムで機能せず、私のシステムだけで機能しないのかについて、私は完全に混乱しています。どんな助けでも大歓迎です。

4

2 に答える 2

6

私にとってはうまくいきます

ここに画像の説明を入力

グーグルはあなたをブロックしていませんか?記憶によると、1 日あたり 10,000 件程度のクエリがあります。

InputStream( )を使用して URL を手動でダウンロードしてみてURL.openStream()、イメージ バイナリ以外の応答が得られるかどうかを確認してください。

更新しました

調査の結果、ここに記載されているように、Java 7 と IPv6 に問題があることがわかりました Javaを使用してファイルをダウンロードすると、ランダムにフリーズします

于 2012-08-29T00:34:45.213 に答える
3

常にEDTでGUIを起動および更新してください。詳細については、Swingでの同時実行を参照してください。


g.drawImage(getaImg(), 0, 0, null); // see javadoc for more info on the parameters

4文字の編集で問題が解決するはずなので、このコメントは非常に良いアドバイスです。

g.drawImage(getaImg(), 0, 0, this); // Observer is good for asynchronous image load
于 2012-08-29T01:11:07.473 に答える