在java中实现用于聊天的GUI

时间:2014-08-06 14:41:49

标签: java swing layout alignment jtextpane

我想在java中实现聊天应用程序,我希望它显示像Viber这样的消息: 用户以正确对齐方式发送的消息 他的朋友左对齐的消息 我也希望他们有不同的风格。

聊天消息可能包含:文本,图像等。

我使用JPannel chatPchatP.setLayout(new BoxLayout(chatPl, BoxLayout.PAGE_AXIS)聊天窗口 对于短信我使用JTextpane,我使用setAlignmentX("alignment");进行集对齐! :

       `JTextPane jtp = new JTextPane(){

        private static final long serialVersionUID = 1L;

        @Override
        public Dimension getMinimumSize(){
            return new Dimension(message.length()*5, getContentHeight(message.length()*5,message)+10);
        }
        @Override 
        public Dimension  getMaximumSize(){
            return  new Dimension(message.length()*5, getContentHeight(message.length()*5,message)+10);
        }
    }; jtp.setAlignmentX(Component.LEFT_ALIGNMENT);`

对于其他类型的消息我创建了一个包含它的JPannel。 并将这些组件添加到JPannel chatP

我的问题是设置JTextpane的大小以修复其消息。对齐!

1 个答案:

答案 0 :(得分:0)

jtp.setAlignmentX(Component.LEFT_ALIGNMENT);

是徒劳的。您必须在文档级别设置对齐方式。正如您所说,您使用样式,因此您的窗格具有StyledDocument的实例,您可以通过jtp.getDocument()获取该文档。

StyledDocument具有方法

public void setParagraphAttributes(int offset, 
                                   int length, 
                                   AttributeSet s, 
                                   boolean replace);

在AttributeSet中,您可以设置所需的对齐并传递给应用于所需文本片段的方法以对齐它。

请参阅here示例2了解中心对齐