使用此列表渲染
import com.sun.lwuit.Component;
import com.sun.lwuit.Font;
import com.sun.lwuit.Image;
import com.sun.lwuit.Label;
import com.sun.lwuit.List;
import com.sun.lwuit.list.ListCellRenderer;
import com.sun.lwuit.plaf.Border;
import java.io.IOException;
public class MyListRenderer extends Label implements ListCellRenderer {
private Image[] images;
/** Creates a new instance of MyListRenderer */
public MyListRenderer() {
super("");
images = new Image[2];
try {
images[0] = Image.createImage("/on.png");
images[1] = Image.createImage("/off.png");
} catch (IOException ex) {
ex.printStackTrace();
}
}
public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) {
setText(value.toString());
//getStyle().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,Font.SIZE_MEDIUM));
if (isSelected) {
setFocus(true);
setIcon(images[1]);
getStyle().setBgColor(0xffcc99);
getStyle().setBgTransparency(55);
getStyle().setBorder(Border.createRoundBorder(15, 15, 0xff9900, true));
} else {
setFocus(false);
setIcon(images[0]);
getStyle().setBgColor(0xffffff);
getStyle().setFgColor(0x000000);
getStyle().setBorder(Border.createRoundBorder(15, 15, 0xffcc99, true));
getStyle().setBgTransparency(255);
}
return this;
}
public Component getListFocusComponent(List list) {
setIcon(images[1]);
setText("");
getStyle().setBgColor(0x0000ff);//no effect
setFocus(true);
getStyle().setBgTransparency(100);
return this;
}
}
您可以從該渲染器中刪除不需要embelishments:焦點顏色變化等,......我也給代碼的選擇,而選擇的列表項的兩個不同的圖標。 然後設置列表這樣的渲染:
lst.setListCellRenderer(new MyListRenderer());
親愛的彼得 你會告訴我如何爲列表中的每個項目設置不同的圖像? 坦克提前 – aida
這將需要你建立一個新的/自定義列表; lwuit或j2me列表中的正常列表不會爲您提供此功能。我創建了一個擴展列表,爲每個列表項設置圖標 - 你需要一個渲染器來渲染它。我不能在這個線程中發佈代碼,因爲空間,我試過了,它不適合。或者,您可以在lwuit演示中查看魚眼渲染器。 – Peter
tanx彼得,我明白你的幫助..祝你好運 – aida