3
私は、ある種のファイルチューナー用にカスタムjlistセルレンダラーを作成しています。私の問題は、ImageIconを読んだときに次元(-1、-1)があるように見えるので、正しくサイズを変更できないということです。写真はシンプルなテクスチャ(木、金属など)です。 次に、画像の代わりにJPanelを追加して、画像をパネルに追加すると、画像のサイズを変更する必要はありません。JPanelをJLabelに挿入するにはどうすればよいですか?
私は2つの可能性があります。
- 彼らは次元-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