Dom*_*les 0 java swing image awt
我在使用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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我通过调试器的步骤运行它,它停在这一行:
Image img=new ImageIcon(url).getImage();
Run Code Online (Sandbox Code Playgroud)
但没有错误,它只会永远挂起.
我完全困惑为什么它不能在我的系统上工作,只有我的系统.任何帮助将不胜感激.
对我来说很好

Google不会阻止你吗?从记忆中,你每天有10,000次查询或类似的东西.
尝试使用InputStream(URL.openStream())手动下载URL ,看看你是否得到了除图像二进制之外的某种响应.
更新
经过调查,发现Java 7和IPv6存在问题,如此处所述使用Java随机冻结下载文件