0

連絡先を表示するリストを作成しようとしています。各リスト項目には、行に名前が表示され、2行目に電話番号が表示され、画像またはアイコンが表示される場合があります。そのために2つのラベルを使用することを考えていましたが、カスタムリストモデルを使用してこれを実装する方法を理解できます.

私の最初の試みは、リストに必要な情報を含む Panel オブジェクトを追加し、それをデフォルトのリスト モデルのインスタンスに追加することでしたが、リストにクラス名しか表示されませんでした。

    DefaultListModel Clistmodel = new DefaultListModel();//
    Clistmodel.addElement(Contact);//Contact is an JPanel object
    GroupList.setModel(Clistmodel);//GroupList is the List object

これはまったくうまくいきませんでしたが、デフォルトのリストモデルは私が思う文字列をレンダリングする方法しか知らないことがわかったので、カスタムリストモデルまたはカスタムListCellRendererを作成する必要があります。どちらが問題を解決するのか本当にわかりません問題。

4

1 に答える 1

5

あなたの質問は、カスタム リスト モデルを作成する方法を尋ねますが、DefaultListModel がうまく機能するので、それは必要なものではありません (私は思いません)。むしろ、レンダラーで作業する必要があります。各項目が表示する情報を保持する非 GUI クラス (おそらく Contact クラス) を作成し、これを DefaultListModel に保持する JList を作成する必要があります。

次に、カスタム リスト セル レンダラーを作成して、情報を複数の行に表示することが重要です。おそらく、JTextArea、または GridLayout に 2 つの JLabel を保持する JPanel です。レンダラーは実際の基盤となるコンポーネントを表示するのではなく、表示しようとしているコンポーネントのスタンプ イメージに似たものを表示することを理解してください。そのため、実際のコンポーネントのように完全な動作を利用できるわけではありません。手間はかかりますが、user714965がリンクしているチュートリアルのレンダラーの作成セクションに、その方法が示されています。

試してみてください。それでも問題が解決しない場合は、コード、エラー、質問をお送りください。具体的なヘルプを提供できるようになります。

于 2012-05-04T17:34:32.773 に答える