java jlist 更新_用JList怎么做出QQ好友列表,并且能够及时更新上下线,大神求助...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

package cat.list;

import java.awt.Color;

import java.awt.Component;

import java.awt.Font;

import javax.swing.BorderFactory;

import javax.swing.DefaultListModel;

import javax.swing.Icon;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.ListCellRenderer;

public class IconList extends JList

{

public IconList(DefaultListModel model)//使用列表模板创建列表

{

super(model);//调用父类构造方方

setCellRenderer(new IconCellRenderer());//设置单元格设置

setBackground(Color.white);//设置列表背景色

setForeground(Color.black);//设置列表前景色 }

class IconCellRenderer extends JLabel implements ListCellRenderer

{

public Component getListCellRendererComponent(JList list,Object obj,int index, boolean isSelected, boolean cellHasFocus)

{

Object[] cell=(Object[])obj;

setIcon((Icon)cell[0]);//设置图片

setText((cell[1].toString()));//设置文本

setToolTipText(cell[2].toString());//设置提示文本

setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));//加入宽度为5的空白边框

if(isSelected)//如果选中

{

setBackground(new Color(255, 255, 153));//设置背景色

setForeground(Color.black);

}

else//没有选中

{

setBackground(Color.white); //设置背景色

setForeground(Color.black);

}

setEnabled(list.isEnabled());

setFont(new Font("sdf",Font.ROMAN_BASELINE,13));

setOpaque(true);

return this;

}

}

}

--------------------------------------------------------------------------------

下面的是在另外一个类中调用上面的方法

//定义属性

private static DefaultListModel listmodel;

private static JList list;

// 在线客户列表

listmodel = new DefaultListModel();

list = new IconList(listmodel);

Border etch = BorderFactory.createEtchedBorder();

list.setBorder(BorderFactory.createTitledBorder(etch, u_name

+ "的在线客户列表:", TitledBorder.LEADING, TitledBorder.TOP, new Font(

"sdf", Font.ROMAN_BASELINE, 20), Color.black));

JScrollPane scrollPane_2 = new JScrollPane(list);

scrollPane_2.setBounds(430, 10, 245, 375);

getContentPane().add(scrollPane_2);

//客户上线, 更新列表

Set clients = bean.getClients();

Iterator it = clients.iterator();

listmodel.clear();

while (it.hasNext()) {

// 客户的昵称

String ele = it.next();

if (!(name.equals(ele))) {

// 添加选项

listmodel.addElement(new Object[] { new ImageIcon("images//1.jpg"),

ele, "提示信息" });

}

}

list.setModel(listmodel);

list.updateUI();

---------------------------------------------------------------------------------

这样写列表不能及时更新上下线,而且逐个添加很是麻烦,想用Vector该怎么用哈?

@windsun_ul 大神求指点哈!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值