您需要设置List的CellRenderer。示例:
private void initGUI() {
Image orange = getOrangeImage();
Image apple = getAppleImage();
// ...
Map<String, Icon> icons = new HashMap<>();
icons.put("orange", new ImageIcon(orange));
icons.put("apple", new ImageIcon(apple));
// ...
JList<String> list = new JList<>(new String[] { "orange", "apple", "banana" });
list.setCellRenderer(new FruitRenderer(icons));
// ...
}
class FruitRenderer extends DefaultListCellRenderer {
private final Map<String, Icon> icons;
FruitRenderer(Map<String, Icon> icons) {
this.icons = Objects.requireNonNull(icons);
}
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
Component comp = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof String) {
Icon icon = icons.get(value);
((JLabel) comp).setIcon(icon);
}
return comp;
}
}
注意:DefaultCellListener扩展JLabel并用于呈现每个列表单元格。注意2:显然你不能把图标的地图传递给渲染器,这只是一个例子。
我正在做这个作为一个更大的项目的一部分..我有500多个代码,但唯一一点我坚持是分配一个列表的值,以图片在哪里我搜索了几天试图解决它,而不是发布实际的代码,我使这一个服务于相同的目的而不使帖子太长! – jill
那么你有什么尝试?你有错误吗?结果不符合你的预期?你有没有尝试[调试](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)?坦率地说,这看起来像是“为我写代码”的问题,Stack Overflow不是免费的程序员服务。 –
调试将无法正常工作我试过..我知道什么是错误的代码我使用了相同的变量两次在actionlistener导致它没有显示任何值。 – jill