如何在代码中使用新渲染器(使用GUI创建)的标签(LWUIT v1.5)

时间:2012-04-05 07:34:44

标签: lwuit

我在资源编辑器中创建了一个带有三个标签的渲染器(Icon,Destination,lblDate)。

并在StateMachine.java中使用Listmodel事件的列表中使用它

cmp.setModel(new DefaultListModel(payments));
         cmp.setRenderer(new  DefaultListCellRenderer(false) {
        public Component getCellRendererComponent(Component list, Object model, Object value, int index, boolean isSelected) {
               if(value instanceof Payment) { 
                   Payment r = (Payment)value;
                 super.getCellRendererComponent(list, model, r.getPhoneNumber(), index, isSelected);                     
                 setText( r.toString());
                return this;
               }
               return super.getCellRendererComponent(list, model, value, index, isSelected);
        }     
    });

在此代码中,我只能更改渲染器的目标标签

setText( r.toString());

但是如何使用其他标签例如lblDate?如何设置它们的值?

2 个答案:

答案 0 :(得分:0)

您没有为渲染器使用GUI构建器,您可以在Codename One Blog中看到有关如何使用该构建器的详细视频。您正在使用DefaultListCellRenderer这是一个标签,因此它只能包含String和Image,您需要使用更复杂的基础并实现ListCellRenderer接口或使用Hashtable数据模型的标准GUI构建器支持。

答案 1 :(得分:-1)

我刚刚回答了Shai Almog的回答。谢谢。 答案是使用在GUI中像渲染器一样构造的Hashtable Vector。

GUI:

enter image description here

示例代码:

  Vector PaymentsHashVec = new Vector() ;
   for(int iter = 0 ; iter < getPayments().size() ; iter++) {
      Hashtable hsh = new Hashtable();
      Payment p = (Payment)getPayments().elementAt(iter);
      hsh.put("phn", p.getPhoneNumber()) ;
      hsh.put("ant",p.getOriginalAmount()+"/ " + p.getAmount()) ;
      hsh.put("btm",p.getDateSubmitted()) ;
      PaymentsHashVec.addElement(hsh);                                  
   }
 cmp.setModel(new DefaultListModel(PaymentsHashVec));