Điển hình trong quan điểm Eclipse, tôi muốn kiểm soát của tôi để lấy tất cả không gian có sẵn, và chỉ hiển thị thanh cuộn, nếu trường hợp một điều khiển sẽ co lại dưới đây một kích thước có thể sử dụng.
Các câu trả lời khác hoàn toàn hợp lệ, nhưng tôi muốn thêm một ví dụ đầy đủ về phương thức createPartControl
(Eclipse e4).
@PostConstruct
public void createPartControl(Composite parent) {
ScrolledComposite sc = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
Composite composite = new Composite(sc, SWT.NONE);
sc.setContent(composite);
composite.setLayout(new GridLayout(2, false));
Label label = new Label(composite, SWT.NONE);
label.setText("Foo");
Text text = new Text(composite, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.MULTI);
GridDataFactory.fillDefaults().grab(true, true).hint(400, 400).applyTo(text);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
Lưu ý rằng .fillDefaults()
ngụ ý .align(SWT.FILL, SWT.FILL)
.
Tôi thường sử dụng mô hình này, vì vậy tôi đã tạo ra phương pháp sau đây ít helper:
public static ScrolledComposite createScrollable(Composite parent, Consumer<Composite> scrollableContentCreator) {
ScrolledComposite sc = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
Composite composite = new Composite(sc, SWT.NONE);
sc.setContent(composite);
scrollableContentCreator.accept(composite);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
return sc;
}
Nhờ Java 8 lambdas, bây giờ bạn có thể thực hiện composit cuộn mới theo một cách rất nhỏ gọn:
createScrollable(container, composite -> {
composite.setLayout(new FillLayout());
// fill composite with controls
});
Nguồn
2014-07-11 12:48:35
Xin cảm ơn! Bây giờ tôi đã học được LUÔN LUÔN kiểm tra javadoc trước khi hỏi những câu hỏi ngu ngốc ... –