此为韩顺平老师QQ开发项目第二讲好友列表
//我的好友列表,也包括陌生人和黑名单;
package com.qq.client.view;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class QqFriendList extends JFrame implements ActionListener,MouseListener{
//处理第一张卡片(好友列表)
//jphy1代表整个界面,jphy2代表中间的我的好友清单,jphy3包含陌生人和黑名单两个按钮;
JPanel jphy1,jphy2,jphy3;
JButton jphy_jb1,jphy_jb2,jphy_jb3;
JScrollPane jsp1;
//处理第二张卡片(陌生人)
//jpmsr1代表整个界面,jpmsr2代表中间陌生人列表,jpmsr3包含我的好友和陌生人两个按钮;
JPanel jpmsr1,jpmsr2,jpmsr3;
JButton jpmsr_jb1,jpmsr_jb2,jpmsr_jb3;
JScrollPane jsp2;
//把整个JFrame设置成CardLayout布局
CardLayout cl;
public static void main(String[] args) {
// TODO Auto-generated method stub
QqFriendList qqFriendList=new QqFriendList();
}
public QqFriendList() {
//处理第一张卡片(显示好友列表)
//第一张卡片我的好友整个界面jphy1,选择BorderLayout布局,其包括南北东西中;
jphy1=new JPanel(new BorderLayout());
//标注三个按钮;
jphy_jb1=new JButton("我的好友");
jphy_jb2=new JButton("陌生人");
//监听;
jphy_jb2.addActionListener(this);
jphy_jb3=new JButton("黑名单");
//处理中部的jphy2;
//假设有50个好友(表格布局);
//jphy2代表我的好友清单;
jphy2=new JPanel(new GridLayout(50,1,4,4));
//给jphy2初始化50好友
JLabel []jbls=new JLabel[50];
for(int i=0;i<jbls.length;i++){
jbls[i]=new JLabel(i+1+"",new ImageIcon("image/mm.jpg"),JLabel.LEFT);
jphy2.add(jbls[i]);
}
//处理南部;
//表格布局;
jphy3=new JPanel(new GridLayout(2,1));
//把2个按钮加入到jphy3;
jphy3.add(jphy_jb2);
jphy3.add(jphy_jb3);
//jphy2代表中间的我的好友清单,将jphy2加入jsp1,则中部处理完成;
jsp1=new JScrollPane(jphy2);
//对jphy1即整个界面初始化;
jphy1.add(jphy_jb1,"North");//按钮“我的好友”;
jphy1.add(jsp1,"Center");//加入JScrollPane;
jphy1.add(jphy3,"South");//jphy3包含陌生人和黑名单两个按钮;
//this.add(jphy1,"Center");
//真正处理第二张卡片
jpmsr_jb1=new JButton("我的好友");
//监听;
jpmsr_jb1.addActionListener(this);
jpmsr_jb2=new JButton("陌生人");
jpmsr_jb3=new JButton("黑名单");
第二张卡片陌生人整个界面jpmsr1,选择BorderLayout布局,其包括南北东西中;
jpmsr1=new JPanel(new BorderLayout());
//处理陌生人列表;
//假定有20个 陌生人
jpmsr2=new JPanel(new GridLayout(20,1,4,4));
//给jpmsr2初始化20个陌生人;
JLabel []jbls2=new JLabel[20];
for(int i=0;i<jbls2.length;i++){
jbls2[i]=new JLabel(i+1+"",new ImageIcon("image/mm.jpg"),JLabel.LEFT);
//鼠标监听;
jbls[i].addMouseListener(this);
jpmsr2.add(jbls2[i]);
}
//处理北部;
//jpmsr3包含我的好友和陌生人两个按钮;
jpmsr3=new JPanel(new GridLayout(2,1));
//把2个按钮加入到jphy3;
jpmsr3.add(jpmsr_jb1);
jpmsr3.add(jpmsr_jb2);
//处理中部;
jsp2=new JScrollPane(jpmsr2);
jpmsr1.add(jpmsr3,"North");//加入北部;
jpmsr1.add(jsp2,"Center");//加入中部;
jpmsr1.add(jpmsr_jb3,"South");//加入黑名单按钮;
//卡片布局;
cl=new CardLayout();
this.setLayout(cl);
this.add(jphy1,"1");//第一张卡片好友整个界面;
this.add(jpmsr1,"2");//第二张卡片陌生人整个界面;
this.setSize(140,500);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
//如果点击了陌生人按钮,就显示第二张卡片
if(arg0.getSource()==jphy_jb2){
cl.show(this.getContentPane(),"2");
}
else if(arg0.getSource()==jpmsr_jb1){
cl.show(this.getContentPane(), "1");
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
//相应用户双击的事件,并得到好友的编号;
if(e.getClickCount()==2){
//得到该好友的编号;
String friendNo=((JLabel)e.getSource()).getText();
//System.out.println("你希望和"+friendNo+"聊天");
new QqChat(friendNo);
}
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
JLabel j1=(JLabel)e.getSource();
j1.setForeground(Color.red);
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
JLabel j1=(JLabel)e.getSource();
j1.setForeground(Color.black);
}
}