⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 好友列表_bcp.java

📁 用JAVA写的qq,为qq的跨平台使用提供了可能,一直都很讨厌tencent不为linux提供方便,自己写了一个qq,希望有人继续完善,我现在没空做了
💻 JAVA
字号:
//好友列表.java
/**
@author Joedan hongguangming@sohu.com
*/
import java.awt.event.*;
import javax.swing.*;
import myevent.*;
import java.awt.*;
import java.util.*;

class 好友列表 extends JList
{
	好友列表()
	{
		super();
		setModel(Model);
//		设置独特的渲染方式,能区别在线,不在线,被选三种状态
		setCellRenderer(new MyCellRenderer());
//		设置鼠标双击通知机制
		addMouseListener(new MouseAdapter()
			{
				public void mouseClicked(MouseEvent e)
				{
					if (e.getClickCount() == 2 && 监视器 != null)
					监视器.好友列表鼠标双击处理(((列表项)getSelectedValue()).id);
				}
			});
	}
	public void 添加事件监视器(好友列表事件监视器 _监视器)
	{
		监视器 = _监视器;
	}
	public void 添加好友(String id, String name)
	{
		列表.put(id, new 列表项(id, name));
		Model.addElement(列表.get(id));
	}
	public void 好友上线(String id)
	{
		列表项 tmp = (列表项)列表.get(id);
		tmp.online = true;
		int iTmp = Model.indexOf(tmp);
		Model.refresh(iTmp, iTmp);
	}
	public void 好友下线(String id)
	{
		列表项 tmp = (列表项)列表.get(id);
		tmp.online = false;
		int iTmp = Model.indexOf(tmp);
		Model.refresh(iTmp, iTmp);
	}
	public void 删除好友(String id)
	{
		Model.removeElement(列表.get(id));
		列表.remove(id);
	}
	public void 清除好友列表()
	{
		Model.clear();
		列表.clear();
	}
	private class 列表项
	{
		列表项(String _id, String _name)
		{
			id = _id;
			name = _name;
		}
		String id,//
		     name;//
		boolean online = false;
	}
	private Color clrOnLine = Color.blue,//在线时字的颜色
	              clrOffLine = Color.gray,//不在线时字的颜色
	              clrSelected = Color.orange;//选中时字的颜色
	private Font font = new Font("system", 0, 18);
	private class MyCellRenderer extends JLabel implements ListCellRenderer
	{
		public Component getListCellRendererComponent(
			JList list,
			Object value,// value to display
			int index,// cell index
			boolean isSelected,// is the cell selected
			boolean cellHasFocus)// the list and the cell have the focus
		{
			列表项 tmp = (列表项)value;
			setText(tmp.name);
			if (tmp.online)
				setForeground(clrOnLine);
			else
				setForeground(clrOffLine);
			if (isSelected)
				setForeground(clrSelected);
			setFont(font);
			setOpaque(true);//??用途
			return this;
		}
		
	}
	private class MyListModel extends DefaultListModel
	{
		public void refresh(int frm, int to)
		{
			fireContentsChanged(this, frm, to);
		}
	}
	private MyListModel Model = new MyListModel();
	private 好友列表事件监视器 监视器;
	private Hashtable 列表 = new Hashtable();//存放id和“列表项”类对象的对照

	public static void main(String args[])
	{
		JFrame win = new JFrame("好友列表测试");
		final 好友列表 list = new 好友列表();
		list.添加事件监视器(new 好友列表事件监视器()
			{
				public void 好友列表鼠标双击处理(String ID)
				{
					System.out.println(ID + "is double clicked");
				}
			}
		);
		JButton btn = new JButton("上线");
		btn.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					list.好友上线("413");
				}
			}
		);
		list.添加好友("413", "Joe");
		list.添加好友("10000", "test");
		win.add(list, "Center");
		win.add(btn, "South");
		win.setSize(400, 300);
		win.setVisible(true);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -