2

我正在使用 java 中的小程序编写一个简单的基于文本的聊天应用程序,它由几个组件组成,其中一个是我的 Jlist,它提供了该特定时间点的在线用户列表。

我想要的是我需要在Jlist中设置一个除了在线用户名之外的小图片。

有没有人有任何基于此的想法。如果您有任何问题,请随时提问。

谢谢,普内特

4

1 回答 1

0

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 实际上存储了除用户名之外的其他部分(动态组件,例如状态、组名等),您可能需要从传递到值对象的字符串中解析出用户名。

于 2013-04-05T15:02:42.927 回答