我正在为某种filechooser编写自定义jlist单元格渲染器。我的问题是,当我读取我的ImageIcon时,它似乎有尺寸(-1,-1),所以我无法正确调整它。图片是简单的纹理(木材,金属等)。 然后我想如果我添加一个JPanel而不是一个图像,然后将图像添加到面板,我甚至不得不调整图片大小。
我有两种可能性:
这是我的列表单元格的预览。
这是我的自定义渲染器,它会向单元格添加图标。
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;
}
}
答案 0 :(得分:3)
只需用面板替换标签即可。
您可以使用JPanel
作为渲染组件而不是JLabel
。