ある種のfilechooser用のカスタムjlistセルレンダラーを書いています。私の問題は、ImageIconを読んだときに、サイズが(-1、-1)であるように見えるため、サイズを適切に変更できないことです。写真はシンプルな質感(木、金属など)です。次に、画像の代わりに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;
}
}