2016-06-27 2 views
-1

행 개수에 따라 동적으로 NatTable 크기를 조정하고 싶습니다. 다른 말로하면 10 개의 행을 가진 높이 'x'가 붙어 있습니다. 행 수가 10보다 작은 경우에는 nattable의 높이가 감소해야하므로 빈 공간을 볼 수 없습니다. 행 수가 10을 초과하면 세로 스크롤 막대가 나타납니다.자동 - NatTable을 동적으로 크기 조정합니다.

답변

0

결국 SWT 레이아웃 질문입니다. 기본적으로 테이블 내용을 기반으로 최소 높이를 지정하는 방법을 요구하고 있습니다. GridLayout과 사용 가능한 컨테이너 높이에 따라 최소 높이를 업데이트하는 크기 조절 리스너를 사용하여이 문제를 해결할 수 있습니다.

Composite panel = new Composite(parent, SWT.NONE); 
panel.setLayout(new GridLayout()); 
NatTable natTable = new NatTable(panel); 

// minimum height of NatTable + scrollbar 
int minHeight = natTable.getPreferredHeight() + 18; 

GridDataFactory 
    .swtDefaults() 
    .align(SWT.FILL, SWT.BEGINNING) 
    .grab(true, true) 
    .minSize(SWT.DEFAULT, minHeight) 
    .applyTo(natTable); 

panel.addListener(SWT.Resize, new Listener() { 

    @Override 
    public void handleEvent(Event event) { 
     GridData data = ((GridData) natTable.getLayoutData()); 
     // minHeight + 10 because of the margins 
     if (panel.getBounds().height < (minHeight + 10)) { 
      data.minimumHeight = SWT.DEFAULT; 
      data.verticalAlignment = SWT.FILL; 
     } else { 
      data.minimumHeight = minHeight; 
      data.verticalAlignment = SWT.BEGINNING; 
     } 
    } 
}); 

이것은 단지 하나의 해결책 일뿐입니다. 당신이 사용하고있는 레이아웃에 따라 더 우아한 것들이있을 수 있습니다.

관련 문제