2010-08-11 4 views
9

내 행의 높이를 동적으로 변경하는 데 문제가 있습니다. 과부하가 필요한 방법이 있습니까?JTable 동적으로 행 높이 변경

--Edit--

그것이 짧은 게시물에 대한 죄송합니다 처음으로 .... 내 문제는 내용에 따라 행 높이 변경과는 정말이었다. 그래서 지금까지 내가 한 것은 TabelCellRenderer를 구현하는 내부 클래스로 만들어졌습니다.

이것은 내가 행 높이 계산을 위해 지금하고있는 일입니다.

private static class TextAreaRenderer extends JTextPane implements TableCellRenderer 
    { 


    public Component getTableCellRendererComponent(JTable table, Object value, 
               boolean isSelected, 
               boolean hasFocus, int row, 
               int column) 
    { 
     /* Setup Code here */ 

     this.setText(((String)value).getEntityName()); 
     int height = new Double(this.getPreferredSize().getHeight()).intValue(); 
     if (table.getRowHeight(row) < height) 
      table.setRowHeight(row, height); 

     /* some more code */ 

     return this; 
    } 

}

이이 작업을 수행하는 올바른 방법이 될 것인가? 감사합니다. .

+3

아니요, 렌더러는 테이블 행의 높이를 변경해서는 안됩니다. 데이터가 모델에 추가되면이 작업을 수행해야합니다. 즉, 테이블을 만들 때 계산을 수행합니다. 그런 다음 TableModelListener를 사용하여 데이터 변경 내용을 수신 한 다음 계산을 다시 실행합니다. – camickr

+1

데이터와 뷰 레이어를 구분할 수있어 훨씬 더 나은 솔루션입니다. 또한 그때 난 단지 한 곳에서 코드를 가지고 있고 테이블 레이아웃을 변경할 때마다 업데이트 코드를 작성하는 것에 대해 걱정하지 않아도됩니다. – kohlerfc

+3

@camickr의 경우 데이터는 뷰와는 아무런 관련이 없습니다. 모델에 데이터를 추가 할 때 높이 행을 어떻게 계산해야합니까? 모델과 데이터는 뷰와 독립적이어야합니다. ** IS ** 실제로 위젯이 표시 될 어떤 데이터를 맞추는 방법에 대한 계산을 수행해야하는 디자인의보기 부분입니다. 나는 그것이 렌더러가되어야한다고 말하고있는 것이 아니라, 모델이 확실히해서는 안된다. – Sebastian

답변

5
table.setRowHeight(...); 

더 많은 도움이 필요하면 SSCCE을 게시하십시오.

+0

을 수락합니다. 매우 똑바로 앞으로 ans ... – gumuruh

2

setRowHeight(row, height);으로 전화하면됩니다. 예 :

JTable t = new JTable(5, 5); 
t.setRowHeight(2, 30); 

은 세 번째 행을 30으로 높게 설정합니다.

질문이 더 복잡합니까? 당신은 그 문제에 대해 많이 말하지 않았습니다.