-1

我在资源编辑器中创建了一个渲染器,带有三个标签(图标、目标、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?如何设置它们的值?

4

2 回答 2

0

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

于 2012-04-08T11:58:58.270 回答
-1

我刚刚得到了 Shai Almog 的答案。谢谢。答案是在 GUI 中使用类似于渲染器的 Hashtable 向量。

图形用户界面:

在此处输入图像描述

示例代码:

  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));
于 2012-04-27T06:40:42.940 回答