2015-02-03 6 views
1

10 개의 열이있는 JTable이 있습니다. 동적으로 생성 된 10 개의 JCheckbox를 정렬하고 JTable 위의 한 행에 정렬해야합니다. 각 JCheckboxes 왼쪽 위치를 각 셀 x 좌표의 jtable 첫 행에 맞 춥니 다.런타임시 JTable 위의 JCheckBox를 정렬하는 방법, 각 셀 x 좌표의 첫 번째 행을 정렬 하시겠습니까?

자바 스윙 GUI 외관 : JInternalFrame-> with two JScrollpanes (상위 & 아래)

최고 지역 : JScrollpane->JPanel->JCheckbox's (10 확인란)

바닥 면적 : JScrollpane->JTable (10 열) 여기

내가 준비 할 각 체크 상자 x는 각 셀 x 좌표의 테이블과 일치합니다.

아래 코드를 시도했지만 작동하지 않습니다. (테이블의 5 열 너비로 덮여있는 10 개의 확인란)

테이블의 열 개수 및 확인란 만들기는 동적이며 필요에 따라 변경됩니다.

panel.setPreferredSize(new Dimension(scrollpane.getPreferredSize().width, scrollpane.getPreferredSize().height)); 

    int intColCount=table.getColumnCount(); 
    int intX=0; 

    JCheckBox checkboxTop[] = new JCheckBox[intColCount]; 
    JCheckBox checkboxBottom[] = new JCheckBox[intColCount]; 
    for(int i=0;i<intColCount;i++){ 
     intX = (int)table.getCellRect(0, i, true).getX(); 

     checkboxTop[i]= new JCheckBox("Top "+(i+1)); 
     panel.add(checkboxTop[i]); 
     checkboxTop[i].setBounds(intX, 10, 50, 10); 

     checkboxBottom[i]= new JCheckBox("Bottom "+(i+1)); 
     panel.add(checkboxBottom[i]); 
     checkboxBottom[i].setBounds(intX, 30, 50, 10);    
    } 
    panel.setPreferredSize(new Dimension(intColCount*(int_each_cell_width), panel.getPreferredSize().height)); 

수있는 일주 몇 가지 아이디어 ... 논리를 공유하는 모든 사람에게

+0

그리고 열 크기가 변경되면? 체크 박스를 재정렬 하시겠습니까? 테이블의 ColumnModel에 연결된 레이아웃 관리를 직접 작성해야 할 것입니다 ... – MadProgrammer

+0

예 테이블의 열 개수와 확인란이 동적이며 필요할 때마다 변경됩니다. – Jeet

+0

모델에 대한 변경을 모니터링하기 위해 TableModel의 TableModelListener 및 테이블에 수신기를 연결해야합니다. – MadProgrammer

답변

0

감사합니다.

아래의 코드가 변경된 후에도 문제가 없습니다.

//scrltbl is the scrollpane of the jtable 

scrollpane.setPreferredSize(scrltbl.getPreferredSize()) 
int intColCount = table.getColumnCount(); 
panel.setLayout(new GridLayout(2, intColCount)); 
int intColCount=table.getColumnCount(); 
int intX=0; 

JCheckBox checkboxTop[] = new JCheckBox[intColCount]; 
JCheckBox checkboxBottom[] = new JCheckBox[intColCount]; 
for(int i=0;i<intColCount;i++){ 
    checkboxTop[i]= new JCheckBox("Top "+(i+1)); 
    panel.add(checkboxTop[i]); 
} 
for(int i=0;i<intColCount;i++){ 
    checkboxBottom[i]= new JCheckBox("Bottom "+(i+1)); 
    panel.add(checkboxBottom[i]); 
} 
panel.updateUI();