将图像添加到JList项目

我有一个JList,我正在使用DefaultListModel,一切都很好,项目(字符串)被正确添加,但我想在每个字符串旁边的JList中添加一个图像(例如显示用户的状态)。任何人都可以帮助我那? 在此先感谢。这是我添加元素的方式,我也可以添加图像吗?

private DefaultListModel modelO = (DefaultListModel) Teacher.made_list.getModel(); ((DefaultListModel) Teacher.made_list.getModel()).addElement(studName); 

您必须实现ListCellRenderer (或扩展DefaultListCellRenderer )并使用getListCellRendererComponent方法返回带有图标的Jlabel

例:

 public class IconListRenderer extends DefaultListCellRenderer { public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JLabel label = (JLabel) super.getListCellRendererComponent( list, value, index, isSelected, cellHasFocus); Icon icon = this.getIcon(list, value, index, isSelected, cellHasFocus) label.setIcon(icon); return label; } protected Icon getIcon( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { // how do I get icon? } } 

您必须实现getIcon方法。

该模型用于存储数据,渲染器用于显示数据。 默认渲染器可以处理字符串和图标,但如果您需要执行更多操作,则可以提供自定义渲染器。 这是一个例子 。 这是一个combobox,但JLists的渲染器是相同的。

在这里您可以找到复杂的解决方案

  • 自定义JList元素(允许从列表元素中获取图标图像)
  • 处理选择样式
  • 使用ListCellRenderer比仅扩展Default更方便

http://www.codejava.net/java-se/swing/jlist-custom-renderer-example