应该使用什么组件在聊天应用程序中显示消息?

时间:2013-09-08 19:14:27

标签: java swing

看一下下图:

enter image description here

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

1 个答案:

答案 0 :(得分:4)

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


修改
你说:

  

但是我如何在JList中创建Name-Date(换行符)消息部分?这是一个列表项吗?

不,单元格渲染器将使用允许多行显示的组件,可能是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信息转换为可显示/可渲染的组件。