2012-03-08 73 views
3

我正在爲某種類型的filechooser編寫自定義jlist單元格渲染器。我的問題是,當我閱讀我的ImageIcon時,它似乎有尺寸(-1,-1),所以我無法正確調整它。圖片是一個簡單的紋理(木材,金屬等)。 然後我想,如果我添加了一個JPanel而不是一個圖像,然後將圖像添加到面板,我甚至不必調整圖片大小。如何在JLabel中插入JPanel?

我有2種可能:

  1. 閱讀從硬盤驅動器中的ImageIcon,讓他們不要有尺寸-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 2012-03-08 15:56:26

回答

3

只需用面板替換標籤即可。您可以使用JPanel作爲渲染組件,而不是JLabel