package client;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import server.ChatThread;
import server.Message;
JButton jphy_jb1,jphy_jb2,jphy_jb3
;
JButton jpmsr_jb1,jpmsr_jb2,jpmsr_jb3
;
public FriendList
(String name
)
{ this.name=name;
this.setTitle(name); //设置窗体的标题
this.setSize(200, 650); //设置窗体的大小
this.setLocationRelativeTo(null); //设置窗体出现位置居中
this.setDefaultCloseOperation(3); //设置窗体的关闭操作
this.setResizable(true); //设置禁止调整窗体的大小
this.
setIconImage((new ImageIcon("src/MyPicture/qq.png").
getImage()));//设置标题栏图标
//好友面板*********************************************
jphy_jb2.addActionListener(e->c1.show(this.getContentPane(),"2"));
for(int i=0;i<jbs1.length;i++)
jbs1[i].setEnabled(false); //false 图标都是灰暗的,不可操作,true表示图标可操作
if(jbs1[i].getText().equals(name))
{jbs1[i].setEnabled(true);}
jbs1[i].addMouseListener(this);
jphy2.add(jbs1[i]);
}
jphy1
=new JPanel(new BorderLayout()){{add
(jphy_jb1,
"North");add
(jsp1,
"Center");add
(jphy3,
"South"); }};
//好友面板*********************************************
//黑名单*********************************************
jpmsr_jb1.addActionListener(e->c1.show(this.getContentPane(),"1"));
for(int i=0;i<jbs2.length;i++)
jbs2[i].setEnabled(false); //false 图标都是灰暗的,不可操作,true表示图标可操作
jbs2[i].addMouseListener(this);
jpmsr2.add(jbs2[i]);
}
jpmsr3
=new JPanel(new GridLayout(2,
1)){{add
(jpmsr_jb1
);add
(new JButton("陌生人"));}}; //2行一列,将jpmsr_jb1,jpmsr_jb2变成一个上部面板
jpmsr1
=new JPanel(new BorderLayout()){{add
(jpmsr3,
"North");add
(jsp2,
"Center");add
(jpmsr_jb3,
"South"); }};
//黑名单*********************************************
this.setLayout(c1); //详细看下CardLayout的知识
this.add(jphy1,"1"); //将面板jphy1添加到CardLayout的1号位置
this.add(jpmsr1,"2"); //将面板jpmsr1添加到CardLayout的2号位置
this.setSize(250, 600);//设置面板大小
this.setVisible(true);
}
}
}
{ ((JLabel)e.
getSource()).
setForeground(Color.
red);//鼠标移动到头像上,头像变红
}
{ ((JLabel)e.
getSource()).
setForeground(Color.
BLACK);//鼠标移动到头像上,头像变黑
}
{ if(e.getClickCount()==2)
{ String friendNo
= ((JLabel)e.
getSource()).
getText(); //得到聊天的好友编号
String sss
=this.
name+" "+friendNo
;
ChatThread.addQqChat(sss, new Chat(this.name,friendNo)); // 这行代码检查错误用了1小时,错误代码是ManageQqChat.hm1.put(sss,a)
}
}
public void updateFriend(Message m)
{
//让对应好友图标变亮
Arrays.
asList(m.
getCon().
split(" ")).
forEach(i
->jbs1
[Integer.
parseInt(i
)-1].
setEnabled(true)) ;
}
}
package s122803;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public Server()
{
jb.addActionListener(this); //
jp.add(jtf);
jp.add(jb);
this.setTitle("服务器");// 设置窗体的标题
this.setSize(400, 300);// 设置窗体的大小
this.setDefaultCloseOperation(3);// 设置关闭的方式
this.setLocationRelativeTo(null);// 设置窗体出现在屏幕中间
this.setResizable(false);// 设置窗体不可改变大小
this.setVisible(true);
// 设置窗体属性************************************************************
try {
Socket s
= ss.
accept(); // 监听是否有客户端登陆,只有为true才会执行下面的代码
// 而且监听到的端口赋给s,s就表示连接的客户端端口
/*
* s是客户端端口,s.getInputStream这个方法是获取客户端的输入流,从而获取客户端发送的数据
*
* 上面这一句可以写成2句话 InputStreamReader aa=new
* InputStreamReader(s.getInputStream());
*
* BufferedReader br=new BufferedReader(aa); 将字节流放入缓冲池
*/
jta.setText("客户端已接入" + "\r\n");
pw.println(aa);
while (true)
{
jta.append("客户端:" + xinxi + "\r\n");
}
}
}
public static void main
(String[] args
) {
new Server();
}
if (e.getActionCommand().equals("发送")) {
jta.append("服务器:" + xinxi + "\r\n");
pw.println(xinxi);
jtf.setText("");
}
}
}