Skip to content

Commit 71655ca

Browse files
committed
修改消息编码错误
1 parent 87a8d9f commit 71655ca

File tree

8 files changed

+237
-4
lines changed

8 files changed

+237
-4
lines changed

src/main/java/com/nbs/tools/MessageViewHolderCacheHelper.java

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
package com.nbs.tools;
22

3+
import com.nbs.ui.holder.MessageLeftTextViewHolder;
4+
import com.nbs.ui.holder.MessageRightTextViewHolder;
5+
import com.nbs.ui.holder.MessageSystemMessageViewHolder;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
310
/**
411
* @Package : com.nbs.tools
512
* @Description :
@@ -13,5 +20,42 @@
1320
* All rights reserved.
1421
*/
1522
public class MessageViewHolderCacheHelper {
16-
private final int CACHE_CAPACITY = 10;
23+
private final int CACHE_CAPACITY = 20;
24+
private List<MessageRightTextViewHolder> rightTextViewHolders = new ArrayList<>();
25+
26+
private List<MessageLeftTextViewHolder> leftTextViewHolders = new ArrayList<>();
27+
28+
private List<MessageSystemMessageViewHolder> systemMessageViewHolders = new ArrayList<>();
29+
30+
private int rightTextPosition = 0;
31+
private int rightImagePosition = 0;
32+
private int rightAttachmentPosition = 0;
33+
private int leftTextPosition = 0;
34+
private int leftImagePosition = 0;
35+
private int leftAttachmentPosition = 0;
36+
private int systemMessagePosition = 0;
37+
38+
public MessageViewHolderCacheHelper() {
39+
initHolders();
40+
}
41+
42+
private void initHolders(){
43+
new Thread(()->{
44+
long startTime = System.currentTimeMillis();
45+
initLeftTextViewHolder();
46+
initRightTextViewHolder();
47+
}).start();
48+
}
49+
50+
private void initRightTextViewHolder(){
51+
for(int i=0;i<CACHE_CAPACITY;i++){
52+
rightTextViewHolders.add(new MessageRightTextViewHolder());
53+
}
54+
}
55+
56+
private void initLeftTextViewHolder(){
57+
for(int i=0;i<CACHE_CAPACITY;i++){
58+
leftTextViewHolders.add(new MessageLeftTextViewHolder());
59+
}
60+
}
1761
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.nbs.ui.components.messages;
2+
3+
import com.nbs.ui.components.NBS9PathImageIcon;
4+
import com.nbs.ui.components.NBSAttachmentMessageBubble;
5+
6+
import java.awt.*;
7+
8+
/**
9+
* @Package : com.nbs.ui.components.messages
10+
* @Description : <p></p>
11+
* @Author : lambor.c
12+
* @Date : 2018/6/27-3:34
13+
* Copyright (c) 2018, NBS , lambor.c<[email protected]>.
14+
* All rights reserved.
15+
*/
16+
public class NBSLeftImageMessageBubble extends NBSAttachmentMessageBubble {
17+
18+
public NBSLeftImageMessageBubble() {
19+
NBS9PathImageIcon normal = new NBS9PathImageIcon(this.getClass().getResource("/icon/nbs64.png"));
20+
NBS9PathImageIcon active = new NBS9PathImageIcon(this.getClass().getResource("/icon/nbs64.png"));
21+
setBackgroundIcon(normal);
22+
setNormal(normal);
23+
setActive(active);
24+
}
25+
26+
@Override
27+
public Insets getInsets() {
28+
return new Insets(2,9,3,2);
29+
}
30+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.nbs.ui.holder;
2+
3+
import com.nbs.ui.cnst.FontUtil;
4+
import com.nbs.ui.components.ColorCnst;
5+
import com.nbs.ui.components.GBC;
6+
import com.nbs.ui.components.SizeAutoAdjustTextArea;
7+
import com.nbs.ui.components.VerticalFlowLayout;
8+
import com.nbs.ui.components.messages.NBSLeftImageMessageBubble;
9+
import com.nbs.ui.frames.MainFrame;
10+
11+
import javax.swing.*;
12+
import java.awt.*;
13+
14+
/**
15+
* @Package : com.nbs.ui.holder
16+
* @Description : <p></p>
17+
* @Author : lambor.c
18+
* @Date : 2018/6/27-3:32
19+
* Copyright (c) 2018, NBS , lambor.c<[email protected]>.
20+
* All rights reserved.
21+
*/
22+
public class MessageLeftTextViewHolder extends BaseMessageViewHolder{
23+
public JLabel sender = new JLabel();
24+
public SizeAutoAdjustTextArea text;
25+
public NBSLeftImageMessageBubble messageBubble = new NBSLeftImageMessageBubble();
26+
27+
private JPanel timePanel = new JPanel();
28+
private JPanel messageAvatarPanel = new JPanel();
29+
30+
public MessageLeftTextViewHolder() {
31+
initComponents();
32+
initView();
33+
}
34+
35+
private void initComponents()
36+
{
37+
int maxWidth = (int) (MainFrame.getContext().currentWindowWidth * 0.5);
38+
text = new SizeAutoAdjustTextArea(maxWidth);
39+
text.setParseUrl(true);
40+
41+
time.setForeground(ColorCnst.FONT_GRAY);
42+
time.setFont(FontUtil.getDefaultFont(12));
43+
44+
sender.setFont(FontUtil.getDefaultFont(12));
45+
sender.setForeground(ColorCnst.FONT_GRAY);
46+
47+
messageAvatarPanel.setBackground(ColorCnst.WINDOW_BACKGROUND);
48+
timePanel.setBackground(ColorCnst.WINDOW_BACKGROUND);
49+
}
50+
51+
private void initView()
52+
{
53+
setLayout(new BorderLayout());
54+
timePanel.add(time);
55+
56+
messageBubble.add(text);
57+
58+
JPanel senderMessagePanel = new JPanel();
59+
senderMessagePanel.setBackground(ColorCnst.WINDOW_BACKGROUND);
60+
senderMessagePanel.setLayout(new VerticalFlowLayout(VerticalFlowLayout.TOP, 0,0,true, false));
61+
senderMessagePanel.add(sender);
62+
senderMessagePanel.add(messageBubble);
63+
64+
messageAvatarPanel.setLayout(new GridBagLayout());
65+
messageAvatarPanel.add(avatar, new GBC(1, 0).setWeight(1, 1).setAnchor(GBC.NORTH).setInsets(4,5,0,0));
66+
messageAvatarPanel.add(senderMessagePanel, new GBC(2, 0)
67+
.setWeight(1000, 1)
68+
.setAnchor(GBC.WEST)
69+
.setInsets(0,5,5,0));
70+
71+
add(timePanel, BorderLayout.NORTH);
72+
add(messageAvatarPanel, BorderLayout.CENTER);
73+
}
74+
}

src/main/java/com/nbs/ui/holder/MessageRightTextViewHolder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ private void initComponents(){
4949
time.setForeground(ColorCnst.FONT_GRAY);
5050
time.setFont(FontUtil.getDefaultFont(12));
5151

52-
ImageIcon resendIcon = new ImageIcon(AppMainWindow.class.getResource("/icon/resend.png"));
52+
ImageIcon resendIcon = new ImageIcon(AppMainWindow.class.getResource("/icon/zh_cn/resend.png"));
5353

5454
resendIcon.setImage(resendIcon.getImage().getScaledInstance(20,20,Image.SCALE_SMOOTH));
5555
resend.setIcon(resendIcon);
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.nbs.ui.holder;
2+
3+
import com.nbs.ui.cnst.FontUtil;
4+
import com.nbs.ui.components.ColorCnst;
5+
import com.nbs.ui.components.VerticalFlowLayout;
6+
7+
import javax.swing.*;
8+
import java.awt.*;
9+
10+
/**
11+
* @Package : com.nbs.ui.holder
12+
* @Description : <p></p>
13+
* @Author : lambor.c
14+
* @Date : 2018/6/27-3:42
15+
* Copyright (c) 2018, NBS , lambor.c<[email protected]>.
16+
* All rights reserved.
17+
*/
18+
public class MessageSystemMessageViewHolder extends BaseMessageViewHolder{
19+
public JLabel text = new JLabel();
20+
private JPanel timePanel = new JPanel();
21+
private JPanel textPanel;
22+
23+
public MessageSystemMessageViewHolder() {
24+
avatar =null;
25+
initComponents();
26+
initView();
27+
}
28+
29+
private void initComponents()
30+
{
31+
setBackground(ColorCnst.WINDOW_BACKGROUND);
32+
timePanel.setBackground(ColorCnst.WINDOW_BACKGROUND);
33+
34+
time.setForeground(ColorCnst.FONT_GRAY);
35+
time.setFont(FontUtil.getDefaultFont(12));
36+
text.setHorizontalTextPosition(SwingConstants.CENTER);
37+
text.setFont(FontUtil.getDefaultFont(12));
38+
textPanel = new JPanel()
39+
{
40+
@Override
41+
public Insets getInsets()
42+
{
43+
return new Insets(-3, 0, -3, 0);
44+
}
45+
46+
public void paint(Graphics g)
47+
{
48+
Graphics2D g2d = (Graphics2D) g.create();
49+
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
50+
g2d.setColor(new Color(195, 195, 195));
51+
g2d.fillRoundRect(0, 0, getWidth(), getHeight(), 10, 10);
52+
53+
g2d.setColor(new Color(248, 248, 248));
54+
FontMetrics fm = getFontMetrics(getFont());
55+
int x = (getWidth() - fm.stringWidth(text.getText())) / 2;
56+
g2d.drawString(text.getText(), x, fm.getHeight() - 1);
57+
g2d.dispose();
58+
}
59+
};
60+
textPanel.setFont(FontUtil.getDefaultFont(12));
61+
}
62+
63+
private void initView()
64+
{
65+
JPanel contentPanel = new JPanel();
66+
contentPanel.setLayout(new VerticalFlowLayout(VerticalFlowLayout.CENTER, 0, 0, true, false));
67+
timePanel.add(time);
68+
textPanel.add(text);
69+
contentPanel.add(timePanel);
70+
contentPanel.add(textPanel);
71+
72+
add(contentPanel);
73+
}
74+
}

src/main/java/com/nbs/ui/panels/ContactsPanel.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,15 @@ private void initView(){
9696
*/
9797
private void initData(){
9898
peerItems.clear();
99-
/* List<ContactsModel> contacts = getContacts();
99+
List<ContactsModel> contacts = getContacts();
100100
for(ContactsModel contactsUser : contacts){
101101
ContactsItem item = new ContactsItem(
102102
contactsUser.getId(),
103103
contactsUser.getNick(),
104104
ContactsItem.TYPE.P.toString());
105105
peerItems.add(item);
106-
}*/
106+
}
107+
107108
}
108109

109110
public void notifyDataSetChanged(){
@@ -127,6 +128,7 @@ private void getPeerAvatar(){
127128

128129

129130
/**
131+
* lanbery
130132
* 初始化Demo TODO
131133
* @return
132134
*/
@@ -271,7 +273,16 @@ private void parseOnline(PeerBoradcastInfo peerInfo,String from){
271273
//刷新UI
272274

273275
//显示信息
276+
String nick;
277+
for(int i=0;i<30;i++){
278+
nick = RadomCharactersHelper.getInstance().generated(8);
279+
ContactsItem item = new ContactsItem();
280+
item.setName(nick);
281+
item.setId("kskdf"+i);
282+
peerItems.add(item);
283+
}
274284

285+
contactsListView.notifyDataSetChanged(false);
275286

276287
}
277288

1.31 KB
Loading
1.04 KB
Loading

0 commit comments

Comments
 (0)