看看下面的图片:
使用什么组件使“聊天消息”显示在图片上?它只是一个带有 html 的简单 JTextPane 吗?这里最好的方法是创建类似的东西?我希望有一种方法可以轻松定位消息并在打印后删除/编辑它。
我会为此使用 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 信息转换为可显示/可渲染的组件。