2012-03-08 28 views
3

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

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

  1. 彼らは次元-1を持っていけないように、ハードドライブからイメージアイコンを読んで、-1
  2. をJLabelの内部にJPanelを挿入します。

ここに私のリストのセルのプレビューがあります。ここで

enter image description here

セルにアイコンを追加し、私のカスタムレンダラ、です。

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; 
    } 
} 
+1

実際には、レンダラの(縮小された)サイズ、または右側のプレビューのサイズ(ただしサイズは変更されています)は問題ではありません。 – kleopatra

答えて

3

ラベルをパネルに置き換えてください。

JLabelではなく、レンダリングコンポーネントとしてJPanelを使用できます。

関連する問題