您需要設置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