【发布时间】:2012-08-23 13:21:48
【问题描述】:
我在使用 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();
但没有错误,它只是永远挂起。
我完全不明白为什么它不能在我的系统上运行,而只能在我的系统上运行。任何帮助将不胜感激。
【问题讨论】:
-
ImageIcon.GetImage->NoSuchMEthodErrorDYMImageIcon.getImage?如果是这样,请务必使用正确的大写字母,否则我们很可能会猜测正在使用ImageIO的扩展(且漏洞百出)实现。 -
为什么不将
ImageIcon添加到JLabel以显示它? -
ImageFrame extends JFrame不要扩展框架,只使用一个实例。