[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] JBuilder/ListControlトホホ技発見!



Java互助会MLのみなさん、こんにちは。

Borland JBuilder の ListControl で、すごいくっだらない技を
発見したので報告します。たぶん FAQ だと思うのですが...

まず、私はこんなクラスを書きました。

User.java
============================================
public class User {
  private int no = 0;
  private String name = null;;

  User() {
  }

  public int getNo() {
    return no;
  }
  public void setNo(int Value) {
    no = Value;
  }

  public String getName() {
    return name;
  }
  public void setName(String Value) {
    name = Value;
  }
}
============================================

JBuilder でアプレットに ListControl を貼り付けて
こんなコーディングをしました。

Applet1.java (部分)
============================================

  //コンポーネントの初期化
  private void jbInit() throws Exception{
    xYLayout1.setWidth(400);
    xYLayout1.setHeight(363);
    this.setLayout(xYLayout1);

    User[] users = new User[10];

    for (int i=0; i<users.length; i++) {
      users[i] = new User();
      users[i].setNo( i + 1 );
      String st = "name" + i;
      users[i].setName(st);
      listControl1.addItem(users[i]);
    }
    this.add(listControl1, new XYConstraints(65, 43, 157, 236));
  }

============================================

アプレットを表示してみましたが、どうやら ListControl のデフォルトの
ペインターは基底クラス java.lang.Object の toString() を
コールしているらしく、クラス名とアドレスが表示されます。

そこで、User.java で toString() をオーバーライドしてやります。

User.java (部分)
============================================
  public String toString() {
    return name;
  }
}
============================================

このアプレットを表示してやると、ListControl に 
User オブジェクトの name にセットした文字列が表示できます。

JBCL のモデル・ビュー・アーキテクチャーの重要な要素である
ViewManager や Painter をまだ理解していないのですが、
とりあえず姑息な手段で逃げ切れそうです。^^;

---------------------------------------------------------------
           遠藤靖之 (えんどう やすゆき)
   E-mail: yasuyuki@xxxxxxxxxx
           EYasuyuki@xxxxxxxxxx
      URL: http://members.aol.com/Eyasuyuki/ (Java互助会ホームページ)
〒171-0022 豊島区南池袋 2-14-10 瀬川池袋ビル 3F
           (株)エムティシー 技術営業部
       TEL 03-5396-0521
       FAX 03-5396-0525
---------------------------------------------------------------