2016-03-08 36 views
1

下面的代碼變得java.lang.ClassCastException: java.awt.image.BufferedImage cannot be cast to com.codename1.ui.Image錯誤。我該如何解決這個問題?如何在[CodenameOne]中使用URLImage將緩衝的圖像轉換爲圖像

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是標籤。

回答

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並始終將其添加「爲是」,否則還不如解釋here失敗。

圖像的getImage()方法返回圖像的平臺的本地版本。由於平臺本地圖像在每個平臺上不同,JavaSE中的平臺本地圖像不同,或者通過AWT的BufferedImage實現模擬器圖像,因此這對於開發人員來說基本沒有用處。在iOS上,你會得到一個long[]指向本地Objective-C圖像所在的內存區域。

此方法存在以便本機代碼可以訪問平臺相關句柄。

+0

我只在第一時間試過,沒有任何錯誤,也沒有任何輸出。如果你刪除了'.getImage()',你將會看到第四行。 –

+0

你肯定沒有在以下網址URL 圖像= profile.getProfileImageURL() ,它需要一定的時間來從URL 加載圖像,並確保有互聯網上公佈 – tizbn

+1

增加了一些澄清,原來的答案 –

相關問題