2011-08-18 1 views

답변

4

실제로는 가능하지 않습니다 (예상대로 동작하지 않습니다) - 실제로 원하는 것은 수직 또는 수평 목록에 구성 요소를 배치하는 목록 LayoutManager입니다. 따라서 JList을 사용하는 대신 JPanel을 목록 형식의 레이아웃 관리자와 함께 사용하십시오.

이 시도 :

  • BoxLayout
  • GridLayout는 단일 열/행의 모든 ​​JPanels을 넣어 그들에게 모두 같은 크기로 만들 것입니다 단일 열/행의 모든 ​​JPanels을 넣어 것입니다
1

시도해보십시오. 그것은 나를 위해 일합니다.

class PanelRenderer implements ListCellRenderer { 

    @Override 
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
     JPanel renderer = (JPanel) value; 
     renderer.setBackground(isSelected ? Color.red : list.getBackground()); 
     return renderer; 
    } 
} 

public void ShowItemList(List<JPanel> paneList, JPanel container) { 


     DefaultListModel model = new DefaultListModel(); 

     for (JPanel pane:paneList) { 

       model.addElement(pane); 

     } 
     final JList list = new JList(model); 
     list.setFixedCellHeight(40); 
     list.setSelectedIndex(-1); 

     list.setCellRenderer(new JPanelToJList.PanelRenderer()); 
     JScrollPane scroll1 = new JScrollPane(list); 
     final JScrollBar scrollBar = scroll1.getVerticalScrollBar(); 
     scrollBar.addAdjustmentListener(new AdjustmentListener() { 
      @Override 
      public void adjustmentValueChanged(AdjustmentEvent e) { 
       System.out.println("JScrollBar's current value = " + scrollBar.getValue()); 
      } 
     }); 


     container.add(scroll1); 


}