1

看看下面的图片:

在此处输入图像描述

使用什么组件使“聊天消息”显示在图片上?它只是一个带有 html 的简单 JTextPane 吗?这里最好的方法是创建类似的东西?我希望有一种方法可以轻松定位消息并在打印后删除/编辑它。

4

1 回答 1

4

我会为此使用 JList。您的渲染器可以允许在您的 GUI 显示时显示多行,并且 JList 比具有大量 JLabel 的 JPanel 提高了效率,因为它不显示实际组件,而是显示组件。JTextPane 也可以工作,但我认为没有必要,因为显示中的文本不应该是直接可编辑的。而底部的 JTextField 或 JTextArea 是应该进行编辑和输入的地方。另一种选择是使用具有单列的 JTable——与上面的想法相同,但允许根据需要编辑单元格。


编辑
你状态:

但是我将如何在 JList 中创建名称 - 日期(换行符)消息部分?那会是 1 个列表项吗?

不,单元格渲染器将使用允许多行显示的组件,可能是 JTextPane 或包含两个 JLabel 的 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 回答