1

さて、私は宿題に取り組んでおり、SWING を使用して Java プロジェクトの GUI を作成していますが、JList で問題が発生しています。

作成して属性を設定した顧客オブジェクトがあり、そのオブジェクトを TreeMap に追加したいと考えています。ツリーマップをフックして、マップ内のすべてのオブジェクトが JList 内に (とにかく name 属性で) 設定されるようにしたいと考えています。

私は多くのことを調べてきましたが、これらのことをゼロからコーディングすることについては多くのことを見てきましたが、Swing の実装についてはほとんど扱っていません。顧客オブジェクトをマップに配置し、JList にマップのコンテンツを反映させたいのですが、それを接続する方法がわかりません。

    customers.put(c.getName(), c);
    this.customerList.(What can I do here? add Customer object?? I can't find what I need);

ご協力いただきありがとうございます!!!

4

2 に答える 2

1

JList の各行に配置するオブジェクトを返すカスタム リスト モデルを作成する必要があります。TreeMap はインデックスではアクセスできないため、別のものが必要になります。したがって、一般的な考え方は次のとおりです:( JList javadocから):

ListModel bigData = new AbstractListModel() {
    ArrayList customers;
    public int getSize() { return customers.size() }
    public Object getElementAt(int index) { return customers.get(index); }
};

JList bigDataList = new JList(bigData);

このように、コレクションを更新するときは、JList でrevalidate()orを呼び出すだけで、その内容も更新されます。repaint()

于 2010-10-02T16:27:25.357 に答える
1

だから私は宿題に取り組んでいます

では、課題とは具体的にどのようなものでしょうか。解決策を提示していただきましたが、実際の要件がわからないため、正しい方向に進んでいるかどうかはわかりません。

オブジェクトを格納するために TreeMap を使用する必要がありますか? オブジェクトに直接アクセスできないため、これは ListModel に使用するのに適したコレクションではないためです。

それとも、JList 内のオブジェクトからのデータを表示するだけの割り当てですか? その場合は、DefaultListModel を使用できます。カスタム オブジェクトの toString() メソッドをオーバーライドして、「name 属性」がリストに表示されるようにするだけです。

于 2010-10-03T03:59:18.367 に答える