3
我正在爲某種類型的filechooser編寫自定義jlist單元格渲染器。我的問題是,當我閱讀我的ImageIcon時,它似乎有尺寸(-1,-1),所以我無法正確調整它。圖片是一個簡單的紋理(木材,金屬等)。 然後我想,如果我添加了一個JPanel而不是一個圖像,然後將圖像添加到面板,我甚至不必調整圖片大小。如何在JLabel中插入JPanel?
我有2種可能:
- 閱讀從硬盤驅動器中的ImageIcon,讓他們不要有尺寸-1,-1
- 插入一個JLabel裏面一個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;
}
}
實際上,我不太明白問題所在:渲染器中的(縮小的)大小或右邊預覽中的(大小調整後的)大小? – kleopatra 2012-03-08 15:56:26