2012-04-26 19 views
5

Tôi đang cố gắng tạo một tổng hợp cuộn có một hỗn hợp với bố cục lưới bên trong.Sử dụng GridLayout trong Scrolled Composite

Tuy nhiên, khi tôi cố gắng đặt nội dung của bản tổng hợp cuộn không tải được gì. Điều này chỉ xuất hiện để ảnh hưởng đến vật liệu tổng hợp với bố cục lưới.

Tôi đang làm gì sai?

Mã của tôi:

CTabItem tbtmNotes = new CTabItem(tabFolder, SWT.NONE); 
    tbtmNotes.setText("Notes"); 
    ScrolledComposite scrollComposite = new ScrolledComposite(tabFolder, SWT.V_SCROLL | SWT.BORDER); 
    tbtmNotes.setControl(scrollComposite); 
    scrollComposite.setContent(new hm_Composites.Comp_Animal_Notes(tabFolder, SWT.None, a)); 

Trả lời

9

Sau một loạt các không quan trọng tôi đã nhận như sau để làm việc hy vọng nó sẽ giúp người khác ra.

public Comp_Animal_Notes(Composite parent, int style, Animal a) 
     throws Exception { 
    super(parent, SWT.NONE); 
    setLayout(new FillLayout(SWT.HORIZONTAL)); 
    ScrolledComposite scrolledComposite = new ScrolledComposite(this, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); 
    scrolledComposite.setExpandHorizontal(true); 
    scrolledComposite.setExpandVertical(true); 

    Composite composite = new Composite(scrolledComposite, SWT.NONE); 
    composite.setLayout(new GridLayout(2, false)); 

    ArrayList<Note> alNotes = a.getAnimalNotes(); 
    this.setRedraw(false); 
    for (int i = 0; i < alNotes.size(); i++) { 
     Note note = alNotes.get(i); 

     CLabel lblNoteDate = new CLabel(composite, SWT.BORDER); 
     lblNoteDate.setFont(SWTResourceManager.getFont("Tahoma", 8, 
       SWT.BOLD)); 
     lblNoteDate.setText("Date:"); 
     lblNoteDate.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); 

     CLabel lblNotedatetxt = new CLabel(composite, SWT.BORDER); 
     lblNotedatetxt.setBackground(SWTResourceManager 
       .getColor(SWT.COLOR_WHITE)); 
     lblNotedatetxt.setText(note.getUserDate()); 
     lblNotedatetxt.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); 

     CLabel lblNoteTxt = new CLabel(composite, SWT.BORDER); 
     lblNoteTxt.setBackground(SWTResourceManager 
       .getColor(SWT.COLOR_WHITE)); 
     lblNoteTxt.setText(note.getStrNote()); 
     lblNoteTxt.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); 
    } 

    scrolledComposite.setContent(composite); 
    scrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

    this.setRedraw(true); 
} 
+0

Thực sự hữu ích! Cám ơn vì đã chia sẻ! –

4

Nếu đoạn mã từ Talon06 không hoạt động, hãy thử thực hiện các thay đổi sau.

scrolledComposite.setContent(composite); 

//add this line 
composite.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

//not sure about this line, was optional in my case 
scrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

this.setRedraw(true); 

Tôi thấy rằng các thành phần trong ScrolledComposite chỉ hiển thị nếu tôi đặt rõ ràng kích thước của hỗn hợp.

@ Talon06: Cảm ơn bạn đã tìm kiếm tuyệt vời!

+0

Cảm ơn những thay đổi này làm cho hỗn hợp có thể nhìn thấy trong tab Thiết kế Windows Builder để tôi làm mọi thứ diễn ra nhanh hơn nhiều. – Talon06

Các vấn đề liên quan