2012-04-05 90 views
-1

我已在資源編輯器中使用三個標籤(Icon,Destination,lblDate)創建了一個Renderer。如何在代碼中使用新Renderer(使用GUI創建)的標籤(LWUIT v1.5)

而且隨着事件的ListModel在StateMachine.java

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?如何設置它們的值?

回答

0

您未使用渲染器的GUI構建器,可以在Codename One Blog中看到有關如何使用該構建器的詳細視頻。您使用的是一個DefaultListCellRenderer,它是一個標籤,因此它只能包含一個String和一個圖像,您需要使用更詳細的基礎並實現ListCellRenderer接口或使用Hashtable數據模型的標準GUI構建器支持。

+0

我使用資源編輯器像視頻中的代號一個博客除了我要填寫從代碼列表。您可以向我展示任何在代碼中使用由資源編輯器創建的listrenderer的示例。或者我應該重寫DefaultListCellRenderer類,而不是在這種情況下使用資源編輯器? – AzizD 2012-04-09 05:37:55

+0

你調用setRenderer的那一刻,意味着你沒有使用GUI構建器...填充列表很容易,就像你做的那樣。只有您使用Payment對象而不是GUI構建器中的列表渲染器無法渲染的Hashtable。所以你需要:爲你的數據使用一個Hashtable(並且不要使用setRenderer)。或者正確實施渲染器,請參閱LWUITDemo中的滾動演示。 – 2012-04-12 04:24:16

+0

付款是一個對象,但付款是支付對象的向量。 – AzizD 2012-04-16 09:29:25

-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)); 
相關問題