我正在使用 java 中的小程序编写一个简单的基于文本的聊天应用程序,它由几个组件组成,其中一个是我的 Jlist,它提供了该特定时间点的在线用户列表。
我想要的是我需要在Jlist中设置一个除了在线用户名之外的小图片。
有没有人有任何基于此的想法。如果您有任何问题,请随时提问。
谢谢,普内特
JList 文档有一个将图标加载到 JList 中的示例。您应该能够使用它来将您的小图片插入到 JList 中。
http://docs.oracle.com/javase/6/docs/api/javax/swing/JList.html
以下是该链接中的相关代码:
// Display an icon and a string for each object in the list.
class MyCellRenderer extends JLabel implements ListCellRenderer {
final static ImageIcon longIcon = new ImageIcon("long.gif");
final static ImageIcon shortIcon = new ImageIcon("short.gif");
// This is the only method defined by ListCellRenderer.
// We just reconfigure the JLabel each time we're called.
public Component getListCellRendererComponent(
JList list, // the list
Object value, // value to display
int index, // cell index
boolean isSelected, // is the cell selected
boolean cellHasFocus) // does the cell have focus
{
String s = value.toString();
setText(s);
setIcon((s.length() > 10) ? longIcon : shortIcon);
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setEnabled(list.isEnabled());
setFont(list.getFont());
setOpaque(true);
return this;
}
}
myList.setCellRenderer(new MyCellRenderer());
假设您的 JList 包含用户名,您可以将用户名放入 HashMap
setIcon(userHashMap.get(s));
如果您的 JLIst 实际上存储了除用户名之外的其他部分(动态组件,例如状态、组名等),您可能需要从传递到值对象的字符串中解析出用户名。