0
我正在做一个方法,返回图像的宽度和高度。 这是一个普通的32x32图标。下面是我做的,到目前为止:阅读图像宽度和高度非常奇怪的问题(爪哇)
Image icon;
String filename = "G:\\icon.jpg";
int iconWidth = 0;
int iconHeight = 0;
icon = Toolkit.getDefaultToolkit().getImage(filename);
iconWidth = icon.getWidth(null);
iconHeight = icon.getHeight(null);
System.out.println(iconWidth);
JFrame window = new JFrame();
icon = Toolkit.getDefaultToolkit().getImage(filename);
iconWidth = icon.getWidth(null);
iconHeight = icon.getHeight(null);
System.out.println(iconWidth);
代码输出
-1
32
32是图像的正确宽度。但为什么它首先返回-1?代码完全一样。删除“JFrame”行会返回两个-1。 JFrame会影响默认的工具包吗?
我也试过这个代码:
JFrame window = new JFrame();
icon = Toolkit.getDefaultToolkit().getImage(filename);
iconWidth = icon.getWidth(null);
iconHeight = icon.getHeight(null);
System.out.println(iconWidth);
它也返回-1。我简直不明白为什么我必须调用它两次才能得到正确的结果。
您可以举一个如何在这种情况下使用MediaTracker或ImageObserver的例子吗?我永远不能初始化MediaTracker,因为我总是得到“构造函数MediaTracker(MainApp)未定义”。使用imageObserver,我卡住了imageUpdate()方法。 – David 2011-05-28 09:27:05
@David:你在“imageUpdate”方法上“卡住”是什么意思?你基本上需要实现ImageObserver来完成你知道图像信息时所需的任何操作。 – 2011-05-28 09:28:07
“卡住”的含义在阅读了很多例子之后(比如http://www.java2s.com/Code/JavaAPI/java.awt.image/ImageObserverALLBITS.htm),我仍然无法理解如何去做,主要是因为我对界面不太熟悉。我也不完全明白发生了什么。感谢您的帮助。 – David 2011-05-28 09:32:45