のJavaDocjavax.swing.ListCellRenderer
のサンプル コードに関する簡単な質問:
ListCellRenderer
この例では、が拡張するクラスによって実装されており、メソッドがJLabel
単純getListCellRendererComponent(...)
に を返すことに少し驚いていますthis
。JLabel
複数の要素を含むリストであっても、周りに a のインスタンスが 1 つしかないように見えます。
setText(...)
通常、リスト内の 2 番目の項目に対してメソッドが内部で呼び出されるとgetListCellRendererComponent(...)
、リスト内の既存の最初の項目のラベルが変更されることを期待します。または、実際には、リストが同じJLabel
インスタンスを 2 回 (またはそれ以上)、リスト内の各項目に対して 1 回ずつ使用することさえできないはずです。
さて、これを解決する 2 つの方法を思いついたので、実際にどちらが (もしあれば) 起こっているのか疑問に思っていました:
- リスト項目ごと
JList
に提供されたの新しいインスタンスを何らかの方法で作成しますか?ListCellRenderer
- それとも、実際にこのコンポーネントを何らかのパネルに追加するのではなく、リストのキャンバスで
getListCellRendererComponent(...)
そのメソッドを呼び出すためだけに返されたコンポーネントを使用しますか?paint(...)