2013-08-02 2 views
2

좋은 아침입니다. 셀의 내용을 기반으로 jtable 행의 높이를 변경하는 Multilinecellrenenderer 있습니다.JTable에서 cellrenenderer 바깥에서 테이블 높이를 설정하는 방법

public Component getTableCellRendererComponent(JTable table, Object 
     value, boolean isSelected, boolean hasFocus, int row, int column) { 
    setText(value.toString());//or something in value, like value.getNote()... 
    if (isSelected) { 
     setForeground(table.getSelectionForeground()); 
     setBackground(table.getSelectionBackground()); 
    } else { 
     setForeground(table.getForeground()); 
     setBackground(table.getBackground()); 
    } 
    setSize(table.getColumnModel().getColumn(column).getWidth(), 
      getPreferredSize().height); 
    if (table.getRowHeight(row) <= getPreferredSize().height) { 
      table.setRowHeight(row, getPreferredSize().height); 
    } 
    return this; 
} 

나는 렌더러 내부의 JTable를 수정하면이 무한 루프에서 실행하게 이해하고 내가 로그 문을 사용하여 확인 내 코드에서 일어나고있다. 또한 모델의 내용을 추가하는 동안 행 높이를 수정할 수 있다는 것을 알고 있고 내가 아는 모든 것을 시도했지만 렌더러 외부에 행의 높이를 설정할 수 없다는 것을 알고 있습니다. 아무도 나를 도울 수 없었다 table.setRowHeight(int,int) 세포 renenderer 밖으로 전화 할 수 있습니다.

는 동적으로 그냥 현재 행 번호와 원하는 높이를 얻는 방법을 모르는 다음 문

for(ProductRow object: data){ 
     model.addRow(new Object[]{object.getProductNumber(),object.getDescription(), 
       object.getLastTouchedOn(),object.getLastTouchedBy()}); 
     } 

를 사용하여 모델의 콘텐츠를 추가하고 있습니다. 도와주세요. 감사합니다.

+2

[예] (http://stackoverflow.com/a/11179669/230513). – trashgod

+1

고마워요 많은 매력처럼 작동했습니다 – Ashish

+0

@ 답장으로 만드는 방법 : – nachokk

답변

2

@mKorbel은이 example에 표시되어 있으므로, 포함 된 구성 요소의 바람직한 크기로부터 setRowHeight()의 원하는 크기를 도출 할 수 있습니다. 둘러싸는 프레임에 대한 후속 통화를 포함해야합니다.