3

ある種のfilechooser用のカスタムjlistセルレンダラーを書いています。私の問題は、ImageIconを読んだときに、サイズが(-1、-1)であるように見えるため、サイズを適切に変更できないことです。写真はシンプルな質感(木、金属など)です。次に、画像の代わりにJPanelを追加してから、画像をパネルに追加すれば、画像のサイズを変更する必要さえないと思いました。

私には2つの可能性があります:

  1. ハードドライブからImageIconを読み取り、寸法が-1、-1にならないようにします。
  2. 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;
    }
}
4

1 に答える 1

4

ラベルをパネルに置き換えるだけです。

JPanelの代わりにをrendercomponentとして使用できますJLabel

于 2012-03-08T12:29:28.677 に答える