2016-06-15 15 views
0

私はこのページを参照しています。 https://tips4java.wordpress.com/2008/11/10/table-column-adjuster/ Jtableで列幅をリサイズすると完全に動作します。JTableの列の幅を変更する

しかし、一部の列の幅が適切ではなく、誰かが私のコードで問題がどこにあるのかを知る助けになることができますか?

私は自分のプロジェクトにJtableイメージを添付しました。学生の詳細の

JTableの画像:

public void resizeColumnWidth() { 
    for (int column = 0; column < student_table.getColumnCount(); column++) 
     { 
     TableColumn tableColumn = student_table.getColumnModel().getColumn(column); 
     int preferredWidth = tableColumn.getMinWidth(); 
     int maxWidth = student_table.getColumnModel().getColumn(column).getMaxWidth(); 

     for (int row = 0; row < student_table.getRowCount(); row++) 
     { 
      TableCellRenderer cellRenderer = student_table.getCellRenderer(row, column); 
      Component c = student_table.prepareRenderer(cellRenderer, row, column); 
      int width = c.getPreferredSize().width + student_table.getIntercellSpacing().width; 
      preferredWidth = Math.max(preferredWidth, width); 

      if (preferredWidth >= maxWidth) 
       { 
       preferredWidth = maxWidth; 
       break; 
       } 
     } 

     tableColumn.setPreferredWidth(preferredWidth); 
     } 
    } 

答えて

1

http://i.stack.imgur.com/owhW6.pngしかし、あなたは、ヘッダー内の名前に言及している場合、一部の列が適切な幅

ではありませんが切り捨てられること問題は、使用しているコードがデータのみを考慮していることです。ヘッダーの幅を考慮する場合は、フル機能のために実際のTableColumnAdjusterクラスを使用する必要があります。

あなたは、各セルのデータについてだけ心配している場合、あなたはまだ潜在的な問題を持っている:あなたは、各列の最大幅を

int maxWidth = student_table.getColumnModel().getColumn(column).getMaxWidth(); 

設定しましたか?

私はデフォルトが75ピクセルだと思います。

注意カラムレベルの幅を制限しない場合は、Integer.MAX_VALUEのような値を使用します。

また、リンクのサンプルコードからコードを変更したのはなぜですか?既にTableColumnへの参照があるので、なぜ参照を再度取得していますか?特定の理由がない限り、コード例を変更しないでください。

+0

私のコードにmaxWidthをどこに宣言すればよいですか教えてください。 – lakshi

関連する問題