Я пишу пользовательский рендерер ячеек jlist для какого-то средства выбора файлов.Моя проблема в том, что когда я читаю свой ImageIcon, кажется, что он имеет размер (-1, -1), поэтому я не могу изменить его размер должным образом.Картина представляет собой простую фактуру (дерево, металл и т. Д.).Тогда я подумал, что если я добавлю JPanel вместо изображения, а затем добавлю изображение на панель, мне даже не придется изменять размер изображения.
У меня есть 2 возможности:
- Считайте ImageIcon с жесткого диска, чтобы у них не было измерения -1, -1
- Вставьте JPanel внутри JLabel.
Вот предварительный просмотр ячеек моего списка.
![enter image description here](https://i.stack.imgur.com/Iw4Pj.png)
Вот мой пользовательский рендер, который добавляет значки в ячейки.
class IconListRenderer extends DefaultListCellRenderer {
private Map<Object, Icon> icons = null;
public IconListRenderer(Map<Object, Icon> icons) {
this.icons = icons;
}
@Override
public Component getListCellRendererComponent(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
// Get the renderer component from parent class
JLabel label =
(JLabel) super.getListCellRendererComponent(list,
value, index, isSelected, cellHasFocus);
ImageIcon icon = (ImageIcon)icons.get(value);
// Set icon to display for value
label.setIcon(icon);
label.setText(value.toString());
return label;
}
}