2013-07-25 2 views
8

내부 데이터에 따라 JTable 열 너비를 맞추려고합니다. 내 코드 :내용에 맞게 Jtable 열을 자동으로 조정하십시오.

for(int column = 0; column < gui.testsuiteInfoTable.getColumnCount(); column ++){ 
     int width =0; 
    for (int row = 0; row < gui.testsuiteInfoTable.getRowCount(); row++) { 
     TableCellRenderer renderer = gui.testsuiteInfoTable.getCellRenderer(row, column); 
     Component comp = gui.testsuiteInfoTable.prepareRenderer(renderer, row, column); 
     width = Math.max (comp.getPreferredSize().width, width); 
     System.out.println(width); 
    } 
    TableColumn col = new TableColumn(); 
    col = gui.testsuiteInfoTable.getColumnModel().getColumn(column); 
    System.out.println(width); 
    col.setWidth(width); 
    gui.testsuiteInfoTable.revalidate(); 

    } 
} 

크기가 맞습니다.하지만 테이블 열은 여전히 ​​같은 너비입니다. 테이블이 GridBagLayout의 ScrollPane에 임베드되어 있습니다. 어떤 제안을 주셔서 감사합니다. 당신은 여분의 라이브러리를 사용할 수있는 경우

+2

[link] (http://tips4java.wordpress.com/2008/11/10/table-column-adjuster/)을보십시오 –

+0

아무 것도 작동하지 않습니다. –

답변

5
col.setWidth(width); 

내용을 읽어 요청 정확히 않는, 당신이하는 방법 "packAll()"와 더불어, JXTable을 가지고있다 (https://java.net/projects/swingx) Swingx 시도 JTable API를 열고 How to Use Tables에 대한 링크를 따르십시오. 이 자습서에서는 setPreferredWidth(...)을 사용하여 열 너비를 제안합니다.

이 작업을 수행하는 Table Column Adjuster을 확인하시기 바랍니다. 이 솔루션은 열 머리글의 너비도 고려할 수 있습니다. 이 모든입니다

+0

감사합니다. 문제는 JTable을 JScrollPane에 추가하지 않으면 setWidth 등이 작동하지 않는 것 같습니다. –

19

이 필요합니다

JTable table = new JTable(){ 
    @Override 
     public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { 
      Component component = super.prepareRenderer(renderer, row, column); 
      int rendererWidth = component.getPreferredSize().width; 
      TableColumn tableColumn = getColumnModel().getColumn(column); 
      tableColumn.setPreferredWidth(Math.max(rendererWidth + getIntercellSpacing().width, tableColumn.getPreferredWidth())); 
      return component; 
     } 
    }; 
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

표는 자동으로 각 열 너비를 조정하는 컨텐츠에 맞게. 크기 조정을 트리거 할시기를 제어 할 필요가 없습니다.

+0

그래도 작동하지만 추가하지 않으면 serialVersionUID를 묻는 경고가 표시됩니다. +1. –

+0

테이블 열이 더 큰 값으로 크기가 조정되면 현재 열의 상태에 맞게 다시 축소되지 않는 것처럼 보입니다. – lordoku

관련 문제