2014-06-10 2 views
1

내 JList에서 내 JPanels를 왼쪽으로 정렬하는 방법에 문제가 있습니다.왼쪽의 JList 항목 (JPanels) 정렬

저는 사용자 정의 ListCellRenderer를 사용하므로 JPanels가 전혀 렌더링되지 않습니다.

public class FileTab extends JPanel implements ListCellRenderer<FileProperties> { 

    public FileTab(int w, int h) { 
     setSize(w, h); 
    } 

    private void initComponents(FileProperties prop, boolean selected) { 
     removeAll(); 
     JCheckBox checkBoxSelection = new JCheckBox(); 
     checkBoxSelection.setBounds(10, 10, 10, 10); 
     add(checkBoxSelection); 

     checkBoxSelection.setSelected(selected); 

     System.out.println("Draw: " + prop.getFileName()); 
     JLabel labelFileName = new JLabel(prop.getFileName()); 
     labelFileName.setBounds(5, 70, getWidth() - 85, 20); 
     labelFileName.setFont(new Font("Consolas", Font.ITALIC, 20)); 
     add(labelFileName); 
    } 

    @Override 
    public Component getListCellRendererComponent(JList<? extends FileProperties> list, FileProperties prop, int index, 
     boolean isSelected, 
     boolean cellHasFocus) { 
     initComponents(prop, isSelected); 

     return this; 
    } 
} 

그리고 내가 목록을 작성하는 방법을 먹으 렴 다음 JPanel의이 아니라 왼쪽보다 중앙에 정렬

JScrollPane scroll = new JScrollPane(); 
scroll.setBounds(5, 5, getWidth() - 10, getHeight() - 110); 
list = new DefaultListModel<>(); 
fileList = new JList<>(list); 
fileList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 
fileList.setCellRenderer(new FileTab(getWidth() - 30, 30)); 
scroll.setViewportView(fileList); 
add(scroll); 

이이 결과.

Jpanels centered in JList

그리고 목록의 갱신 :

list.clear(); 
for (FileProperties props : files) { 
    list.addElement(props); 
} 
fileList.setCellRenderer(new FileTab(getWidth() - 30, 30)); 

답변

1

기본적으로 JPanel에 기본적으로 center aligned있는 FlowLayout 사용합니다. right aligned하는 FlowLayout 사용하는 JPanel의 변경 :

JPanel panel = new JPanel(new FlowLayout(...)); // Read FlowLayout API for proper parameter 
+0

을 당신이 왼쪽 정렬을 의미 같아요. – succcubbus

+0

예, 때로는 손가락이 생각하는 것을 입력하지 않습니다. :) – camickr

1

귀하의 FileTab가 할당 된 LayoutManager에 (기본값은 FlowLayout가있다)이 없습니다. 따라서 추가하는 두 개의 구성 요소 (확인란 및 레이블)는 기본적으로 중앙에 배치됩니다.

아마이 도움이 : JList text alignment