[英]implementing GUI for chat in java
我想用Java实现聊天应用程序,并且我希望它显示Viber之类的消息:用户发送带有右对齐的消息,而他的朋友具有左对齐的消息,我也希望它们具有不同的样式。
聊天消息可能包含:文本,图像等。
我将JPannel chatP
与chatP.setLayout(new BoxLayout(chatPl, BoxLayout.PAGE_AXIS)
用于文本消息JPannel chatP
用于聊天窗口,我使用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的大小以修复其消息。 还有对齐!
jtp.setAlignmentX(Component.LEFT_ALIGNMENT);
是徒劳的。 您必须在文档级别设置对齐方式。 如您所说,您使用样式,因此您的窗格具有StyledDocument实例,您可以通过jtp.getDocument()获得文档。
StyledDocument具有方法
public void setParagraphAttributes(int offset,
int length,
AttributeSet s,
boolean replace);
在AttributeSet中,您可以设置所需的对齐方式,然后传递到应用于所需文本片段的方法以使其对齐。
见这里例如2居中对齐
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.