【发布时间】:2014-05-09 18:43:09
【问题描述】:
我的 java 程序根据纬度和经度从谷歌下载图像。图像保存到我的桌面。然后我调用一个新框架来打开并查看图像。这是错误。当我尝试下载一张图片并查看它时,它工作正常,但是当我尝试下载另一张图片覆盖之前的图片时,框架会显示之前的图片而不是新的图片。
BufferedImage image = null;
try {
URL url = new URL("https://maps.googleapis.com/maps/api/staticmap?center="+x+","+y+"&zoom=14&size=650x600&maptype=hybrid&markers=color:blue%7Clabel:X%7C"+ll.get(1)+","+ll.get(2)+"&sensor=true");
image = ImageIO.read(url);
ImageIO.write(image, "png",new File("C:\\Users\\"+System.getProperty("user.name")+"\\Desktop\\locationpic.png"));
new classes.viewPic(); // calls pic viewer
}catch(Exception e){print("Could not download image...",Default);}
图片查看器
public class viewPic extends JFrame {
public static void main(String [] args) {
new viewPic();
}
public viewPic() {
this.setTitle("Picture Viewer");
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel panel1 = new JPanel();
ImageIcon pic = new ImageIcon("C:\\Users\\"+System.getProperty("user.name")+"\\Desktop\\locationpic.png");
panel1.add(new JLabel(pic));
this.add(panel1);
this.pack();
this.setVisible(true);
}
}
由于我打开了另一个框架,一个“父”框架,将默认关闭操作设置为关闭时退出将关闭我的所有框架。
我能做什么?
【问题讨论】:
-
你确认每次下载的图片都不一样吗?根据您的代码,没有任何问题。试试这个:下载并在一个程序中显示图像(有一个 ImageIcon 的构造函数获取图像,给它你在第一个示例中创建的那个)。这样你就会知道是否有一些缓存机制阻止刷新。
-
我之前的评论不是很清楚:下载并显示图像而不写入磁盘作为中间步骤。它将排除缓存问题。
-
@schmop,我正在尝试,我会尽快回复你
-
好吧@schmop,它按计划工作!我可以添加它更有效。感谢您的帮助,我现在将发布工作代码:)