该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
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 大神求指点哈!