2012-03-08 5 views
3

나는 어떤 종류의 파일 선택기를 위해 커스텀 jlist 셀 렌더러를 쓰고있다. 내 문제는 내 ImageIcon을 읽을 때 치수가 (-1, -1) 것으로 보이므로 적절하게 크기를 조정할 수 없다는 것입니다. 그림은 간단한 질감 (목재, 금속 등)입니다. 그런 다음 이미지 대신 JPanel을 추가 한 다음 이미지를 패널에 추가하면 이미지의 크기를 조정해야 할 필요도 없다고 생각했습니다. 그들이 차원 -1을 해달라고 있도록JLabel 안에 JPanel을 삽입하려면 어떻게해야합니까?

  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 대신 rendercomponent로 JPanel을 사용할 수 있습니다.