2011-09-07 6 views
1

현재 TabelModel의 tableChanged() 이벤트를 수신하고 있습니다 만,이 이벤트는 JTable이 실제로 GUI에 행을 갱신/추가하기 전에 발생합니다. 테이블 높이를 다시 조정하려고 할 때 JTable이 행을 추가하고 표시하는 것을 알 필요가 있습니다. & 내용입니다.JTable GUI가 업데이트 된 후 어떻게 이벤트를 받습니까?

또는 JTable에서 행 높이를 각 행의 구성 요소 크기로 설정할 수 있습니까? getCellRenderer 내부에서 그렇게하려고 시도했지만 이것은 단지 tableChanged 이벤트를 발생시키는 무한 루프를 유발합니다.

답변

4

SwingUtilities.invokeLater (...)의 TableModelListener에 코드를 래핑하십시오. Thats는 코드가 EDT의 끝에 추가되므로 테이블 업데이트가 실행될 때 완료되어야합니다.

+0

그러나 이것은 행 get이 추가되고 행의 크기가 조정될 때까지 눈에 띄는 지연이 있습니다. JTable의 setRowHeight (row, height) 함수가 tablechanged 이벤트를 트리거하지 않고 셀 렌더링 프로세스 중에 행 높이를 설정하는 방법이 있습니까? – lanthica

+0

이렇게하면 딜레이 (잘 밀리 초)가 없어야합니다. 문제를 나타내는 SSCCE를 게시하십시오. 렌더링에서 행 높이 (또는 테이블 속성)를 변경하면 안됩니다. 당신은 "행 추가"와 같은 버튼이 있다고 가정합니다. 행이 추가 될 때마다 그때 행 높이를 조정해야합니다. 그런 다음 TableModelListener를 제거 할 수 있습니다. – camickr

+0

아, 내 잘못이 맞아. 내가 뭔가를 시도하고 있던 곳에. 정말 고맙습니다! – lanthica

관련 문제