使用以下代码时出现java.lang.ClassCastException: java.awt.image.BufferedImage cannot be cast to com.codename1.ui.Image
错误。我怎么能解决这个问题?
EncodedImage encImage = (EncodedImage) fetchResourceFile().getImage("user2.png");
Image profileImage= URLImage.createToStorage(encImage, "Medium_me.jpg", profile.getProfileImageURL(),URLImage.RESIZE_SCALE);
System.out.println("Imaged:" + profileImage.getImage());
findPlayerImageGs(f).setIcon((Image) profileImage.getImage()); //Error Line
findPlayerImageGs(f).repaint();
findPlayerImageGs是Label。
答案 0 :(得分:1)
检查以下修改后的代码,它应该可以正常工作
EncodedImage encImage = (EncodedImage)
fetchResourceFile().getImage("user2.png");
Image profileImage= URLImage.createToStorage(encImage, "Medium_me.jpg", profile.getProfileImageURL(),URLImage.RESIZE_SCALE);
System.out.println("Imaged:" + profileImage.getImage());
**findPlayerImageGs(f).setIcon(profileImage); //it should work**
findPlayerImageGs(f).repaint();
请注意,您不应该操纵URLImage
并始终添加"按原样#34;否则它可能会失败,如here所述。
图像的getImage()
方法返回图像的平台本机版本。作为开发人员,这对您来说几乎没用,因为平台本机映像在每个平台中都不同,在JavaSE中,或者模拟器映像是通过AWT的BufferedImage
实现的。在iOS上,你会得到一个long[]
指向保存原生Objective-C图像的内存区域。
此方法存在,因此本机代码可以访问依赖于平台的句柄。