2016-12-09 3 views
0

높이가 정확하게 항목 수에 맞게 조정 된 테이블을 갖고 싶습니다. SWT에서 일하고 있는데 GridLayout을 사용하고 있습니다. 이것은 내 코드의 발췌 부분입니다 :테이블 높이를 GridLayout을 사용하여 SWT의 항목 수로 조정하는 방법은 무엇입니까?

Table table = new Table(parent, SWT.BORDER); 
table.setHeaderVisible(true); 
table.setLinesVisible(true); 
TableColumn tc1 = new TableColumn(table, SWT.CENTER); 
TableColumn tc2 = new TableColumn(table, SWT.CENTER); 
tc1.setText("Column1"); 
tc2.setText("Column2"); 
tc1.setWidth(85); 
tc2.setWidth(90); 

for (int i = 0; i < 3; i++) { 
    TableItem item = new TableItem(table, SWT.NONE); 
    item.setText(0, "Text Column1"); 
    item.setText(1, "Text Column2"); 
} 

GridData gridData = new GridData(tc1.getWidth()+tc2.getWidth()-17, ???); 
table.setLayoutData(gridData); 

너비에 대해서는 수식을 발견했습니다. 하지만 높이가?

답변

0

Table::getItemHeight()을 사용하여 항목의 주어진 숫자에 필요한 클라이언트 높이를 계산하십시오. 그런 다음 computeTrim()을 사용하여 지정된 클라이언트 높이의 경계를 계산하십시오. 그리드 선이 표시되면 각 분리 선의 너비가 추가됩니다. 마지막으로 heightHintGridData으로 사용하여 GridLayout에 테이블의 특정 높이를 예약하도록 알릴 수 있습니다. 예를 들어

: 클라이언트 폭이 다른 곳에서 계산하는 경우

int clientWidth = ... 
int clientHeight = table.getItemHeight * numberOfItems; 
if(table.getLinesVisible() && numberOfItems > 0) { 
    clientHeight += table.getGridLineWidth() * (numberOfItems - 1); 
} 
Rectangle bounds = table.computeTrim(0, 0, clientWidth, clientHeight); 

GridData gridData = new GridData(SWT.DEFAULT, clientHeight); 

, 당신은뿐만 아니라 0으로 설정할 수 있습니다.

+0

고마워요! int clientHeight = (table.getItemHeight() * items.length) +7; 나를위한 작품 – LCP

+0

'7'과 같은 상수 픽셀 오프셋을 사용하는 경우 모든 플랫폼/화면 해상도/환경 설정에서 작동하지 않는다는 점에 유의하십시오. –

+0

힌트를 보내 주셔서 감사합니다! – LCP

관련 문제