1

次の画像を見てください。

ここに画像の説明を入力

写真のように「チャット メッセージ」を表示するには、どのコンポーネントを使用しますか? html を使用した単純な JTextPane ですか? ここで同様のものを作成するための最良のアプローチは何でしょうか? メッセージをターゲットにして、印刷後に削除/編集するのが簡単なアプローチが欲しい.

4

1 に答える 1

4

これには JList を使用します。レンダラーは、GUI が示すように複数行の表示を可能にすることができます。JList は、実際のコンポーネントではなくコンポーネントのレンダリングを表示するため、多くの JLabel を含む JPanel よりも効率が向上します。JTextPane も同様に機能する可能性がありますが、表示内のテキストは直接編集可能であってはならないため、必要ではないと思います。むしろ、一番下の JTextField または JTextArea で編集と入力を行う必要があります。別のオプションは、単一の列で JTable を使用することです。上記と同じ考え方ですが、必要に応じてセルを編集できます。


あなたの状態を編集
:

しかし、JList で Name - Date (改行) メッセージ部分を作成するにはどうすればよいでしょうか? それは1つのリスト項目でしょうか?

いいえ、セル レンダラーは複数行の表示を可能にするコンポーネントを使用します。おそらく、2 つの JLabel を保持する JTextPane または JPanel です。


編集 2

では、JList の各項目は JPanel になりますか?

いいえ、まったくありません。セル レンダラー はJPanelでもかまいませんが、JList の各アイテムは、Chatter、Date、および String (テキスト) のフィールドを持つ、目的のために作成されたクラスのオブジェクトになります。


編集 3
JList のモデルは GUI コンポーネントを保持するのではなく、JList によって表示される論理情報を保持することを理解してください。

たとえば、クラスを作成できます。

public class ChatEntry {
  private Chatter chatter;  // holds the chatter's name, and any other relevant info
  Date date;  // time of chat entry
  String text;  // the text entered

  //..... getters setters and constructor
}

次に、JList は になりますがJList<ChatEntry>、さらに重要なのは、リストのモデルが ChatEntry アイテムを保持することです。

次に、ChatEntry 情報を表示可能/レンダリング可能なコンポーネントに変換するセル レンダラーを作成します。

于 2013-09-08T19:15:38.650 に答える