2014-06-16 2 views
0

GridBagLayout을 사용하여 테이블을 만들려고했습니다. 그렇게하면 표제 행이없는 테이블이 만들어 지므로 JScrollPane을 추가합니다. 문제는 JScrollPane이 헤더를 표시하지만 다른 모든 행은 표시하지 않기 때문입니다.GridBagLayout 사용 JTable 및 JScrollPane이 작동하지 않습니다.

 Object rowData[][] = { { "1", "Row1-Column2"}, 
      { "2", "Row2-Column2"} }; 
    Object columnNames[] = { "#", "Column Two"}; 

     forms = new JTable(rowData, columnNames); 

     forms.getColumnModel().getColumn(0).setPreferredWidth(27); 
     forms.getColumnModel().getColumn(1).setPreferredWidth(450); 
     forms.getColumnModel().getColumn(0).setResizable(false); 
     forms.getColumnModel().getColumn(1).setResizable(false); 
     forms.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE); 

     JScrollPane fScrollpane = new JScrollPane(forms, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
     fScrollpane.setPreferredSize(new Dimension(500, 110)); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 2; 
     c.gridwidth = 2; 
     pane.add(fScrollpane, c); 

답변

2

구성 요소의 기본 크기를 하드 코딩하면 안된다는 점을 제외하면 기본 코드에 문제가 없습니다. 대신 사용

:

//fScrollpane.setPreferredSize(new Dimension(500, 110)); 

사용하십시오 :

forms.setPreferredScrollableViewportSize(forms.getPreferredSize()); 

이 도움이되지 않는 경우 문제를 보여주는 적절한 SSCCE을 게시 할 수 있습니다.

관련 문제