-1
행 개수에 따라 동적으로 NatTable 크기를 조정하고 싶습니다. 다른 말로하면 10 개의 행을 가진 높이 'x'가 붙어 있습니다. 행 수가 10보다 작은 경우에는 nattable의 높이가 감소해야하므로 빈 공간을 볼 수 없습니다. 행 수가 10을 초과하면 세로 스크롤 막대가 나타납니다.자동 - NatTable을 동적으로 크기 조정합니다.
행 개수에 따라 동적으로 NatTable 크기를 조정하고 싶습니다. 다른 말로하면 10 개의 행을 가진 높이 'x'가 붙어 있습니다. 행 수가 10보다 작은 경우에는 nattable의 높이가 감소해야하므로 빈 공간을 볼 수 없습니다. 행 수가 10을 초과하면 세로 스크롤 막대가 나타납니다.자동 - NatTable을 동적으로 크기 조정합니다.
결국 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;
}
}
});
이것은 단지 하나의 해결책 일뿐입니다. 당신이 사용하고있는 레이아웃에 따라 더 우아한 것들이있을 수 있습니다.