gpt4 book ai didi

java - 使用 j2me 和 lwuit 在后台下载图像

转载 作者:行者123 更新时间:2023-11-29 09:15:09 26 4
gpt4 key购买 nike

我有一个图像列表,可以从互联网上下载并填充到列表中,并在每个图像旁边添加描述文本。

我现在遇到的问题是,据我所知,在下载图像时应用程序会卡住。`

我创建了一个线程来进行下载,类在下面。我使用 start 方法启动线程,但在我使用 run 之前图像将为空。

public class GetImage extends Thread {

public String imgString;
private String url;
private Label label;
public Image img = null;

public GetImage(String url, Label label){
this.url = url;
this.label = new Label();
this.label = label;
}

public Image getPic()
{

return img;
}
public void run()
{
this.getImage_();
this.label.setIcon(img.scaledHeight(60));

}

public void getImage_()
{
HttpConnection hc = null;
DataInputStream dis = null;
DataOutputStream dos = null;
StringBuffer messageBuffer = new StringBuffer();

try{
hc = (HttpConnection)Connector.open(this.url,Connector.READ);
dis = new DataInputStream(hc.openDataInputStream());
int ch;
long len = hc.getLength();
if(len != -1)
{
for(int i=0; i < len; i++)
if((ch = dis.read())!=-1)
messageBuffer.append((char)ch);
}
else
{
while((ch = dis.read()) != -1)
messageBuffer.append((char)ch);
}

this.img = Image.createImage(messageBuffer.toString().getBytes(),0,messageBuffer.toString().length());
dis.close();
}
catch(IOException ae){
messageBuffer.append("Error");
}
finally{
try {
if (hc != null) hc.close();
}
catch (IOException ignored) {}
try {
if (dis != null) dis.close();
}
catch (IOException ignored) {}
try {
if (dos != null) dos.close();
}
catch (IOException ignored) {}
}

//return this.img;
}

}

和显示列表的列表渲染器:

public class ListRenderer extends Label implements ListCellRenderer {

public ListRenderer()
{
super();
}

public Component getListCellRendererComponent(List list, Object o, int i, boolean bln) {
//cast the value object into a Content

Contents entry = (Contents)o;
//get the icon of the Content and set it for this label
this.setIcon(entry.getIcon());
//get the text of the Content and set it for this label
this.setText(entry.getText());
//set transparency
getStyle().setBgTransparency((byte)128);
//set background and foreground colors
//depending on whether the item is selected or not
if(bln)
{
getStyle().setBgColor(0xffcc33);
getStyle().setFgColor(0x000000);
}
else
{
getStyle().setBgColor(0xffffff);

}
return this;
}

public Component getListFocusComponent(List list) {
setText("");
setIcon(null);
getStyle().setBgColor(0xffcc33);
getStyle().setBgTransparency(80);
return this;
}

}

谁能帮忙?

最佳答案

您得到的评论可能是正确的。这blog post显示的内容似乎与您要实现的目标相似。它在 Codename One但大部分代码也应该适用于 LWUIT。

关于java - 使用 j2me 和 lwuit 在后台下载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9976150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com