Jface 의 TableView Provider 에서는 table item 에 Button 등의 컴포넌트를 붙이기 어렵다.
때문에 체크박스의 경우도 대부분 String 값으로 상태를 부분하여 Image를 교체하는 방식을 쓴다.
이러한 불편함 때문에 SWT 로 테이블을 만들게 되었다.
하지만 여기서 또 문제가 생겼다. 하나의 row 를 삭제하였을때 String Column 은 갱신이 바로되지만 체크박스, 버튼등의 Component Editor 가 있는 컬럼은 마우스를 클릭해야 갱신이 되는 현상이 발생했다.
이를 해결하기 위해 update(), redraw(boolean) 등의 명령어로 해결해보려 하였지만 모두 view 를 refresh 하는데 도움이 되진 않았다.
그나마 .pack() 명령어가 view 를 갱신했지만 resize 과정에서 column 넓이가 번쩍인다거나 또는 테이블 높이에 변경이 생겨 보기 좋지 않았다.
결국 refresh 는 테이블의 크기가 변경되어야 동작하는 것을 알게 되었고 한참을 고민하다가 결국 아래와 같이 해결하였다. 방법은 좋지 않아 보여도 효과는 탁월하다.
getTable().setSize(ppt.getTable().getSize().x, ppt.getTable().getSize().y-1); getTable().setSize(ppt.getTable().getSize().x, ppt.getTable().getSize().y+1);
데이터 갱신 후에 세로 높이를 1 줄였다가 다시 1을 늘리는 것이다.
'SWT/JFACE' 카테고리의 다른 글
SWT, Widget 이 들어있는 Table 의 row 삭제하기 (0) | 2012.05.15 |
---|---|
SWT 에서 Table Sort 정렬 하기! (0) | 2012.05.15 |
Eclipse ResourceBundle Plugin 으로 사용하기 (0) | 2012.05.04 |
SWT/Jface 다국어 (MultiLanguage) 지원 (0) | 2012.05.04 |
SWT/JFACE 개발환경 구축하기 (0) | 2012.05.03 |