-1

3つのラベル(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などの他のラベルを使用するにはどうすればよいですか?それらに値を設定する方法は?

4

2 に答える 2

0

レンダラーに GUI ビルダーを使用していない場合は、コードネーム ワン ブログでその使用方法に関する詳細なビデオを見ることができます。ラベルである DefaultListCellRenderer を使用しているため、文字列と画像のみを含めることができます。より精巧なベースを使用して ListCellRenderer インターフェイスを実装するか、Hashtable データ モデルで標準の GUI ビルダー サポートを使用する必要があります。

于 2012-04-08T11:58:58.270 に答える
-1

シャイ・アルモグの答えにたどり着きました。ありがとう。答えは、GUI でレンダラーのように構成された Hashtable の Vector を使用することです。

GUI:

ここに画像の説明を入力

サンプルコード:

  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 に答える