2011-07-27 3 views
2

リスト内の各アイテムにアイコンを追加したい場合があります。これはリストを作成するためのコードです:リスト内の各リストアイテムにアイコンを追加する

Form f3=new Form("DEMO FORM"); 
    f3.setScrollable(true); 
    f3.setLayout(new BorderLayout()); 
    f3.setLayout(new BoxLayout(BoxLayout.Y_AXIS)); 


    String items[] = {"one","two","three","four"}; 
    DefaultListModel myListModel = new DefaultListModel(items); 
    List lst=new List(myListModel); 

    f3.addComponent(lst); 
    f3.show(); 

どうすればいいですか?

答えて

3

使用このリストレンダラー

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; 
    } 
} 

:フォーカスの色の変化などは、...私はまた、選択されていないと選択リスト項目の二つの異なるアイコンのコードを与えています。私は、リスト内のサムネイル(アイコン)を生成するために、新しい「ジェネリックリストセルレンダリング」を使用している

lst.setListCellRenderer(new MyListRenderer()); 
+0

親愛なるピーター リスト内の各アイテムの異なるイメージを設定する方法を教えてください。 tanx事前に – aida

+1

これには、新しい/カスタマイズされたリストを作成する必要があります。 lwuitまたはj2meリストの通常のリストはあなたにこの機能を与えません。私は各リスト項目のアイコンを設定する拡張リストを作成しました。レンダーするにはレンダラーが必要です。私は空間のためにこのスレッドにコードを掲載していません。試してみましたが、うまくいきませんでした。また、lwuitのデモでfish eye rendererをチェックすることもできます。 – Peter

+0

tanxピーター、私はウルの助けに感謝..幸運 – aida

2

モデルにイメージデータを配置するか、レンダラーがそのデータを抽出して適用するための方法を提供する必要があります。 LWUITデモでレンダラのデモとスクロールデモの両方を持っているアイコンとさまざまな入力レイアウトを持つリストを表示するサンプルについては、サンプルを参照してください。あなたはこのレンダラーから不要なembelishmentsを削除することができます

0

: は、このようなリストのレンダラを設定します。私は、リストレンダリングのための他のオプションより実装が簡単であることを発見しました。次のリンクには、このテクニックを使用してリストを作成する方法を示すサンプルコードがあります。 http://codenameone.blogspot.in/2011/03/list-rendering-easy-way-generic-list.html

サムネイルを表示するにはLWUITでかなりボイラースペースだった。

private Container createGenericRendererContainer() throws IOException { 

     Container c = new Container(new BorderLayout()); 
     c.setUIID("ListRenderer"); 

     Label xname = new Label(""); 
     Label description = new Label(); 
     //create box layout to contain name and description 
     Container cnt = new Container(new BoxLayout(BoxLayout.Y_AXIS)); 
     xname.setName("Name"); 
     xname.getStyle().setBgTransparency(0); 
     xname.getStyle().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM)); 
     description.setFocusable(true); 
     description.setName("Description"); 
     cnt.addComponent(xname); 
     cnt.addComponent(description); 
     c.addComponent(BorderLayout.CENTER, cnt); 
     //thumbail or icon goes here. we add to the left in our borderlayout 
     Button thumb = new Button(Image.createImage("/res/home-work.png")); 
     c.addComponent(BorderLayout.WEST, thumb); 

     return c; 

}