2017-01-18 6 views
0

ここに私のコード例があります。私のクラスにはCommentPageというフォームがあり、このセクションでは、誰にでも分かりますか?swtのformpageのセクションにスクロールされた複合コンテンツを表示する方法

public class CommentPage extends FormPage{ 
    private FormToolkit toolkit; 

    public CommentPage (FormEditor editor, String id, String title) { 
    super(editor, id, title); 
    } 
    @Override 
    protected void createFormContent(IManagedForm managedForm) { 
    // TODO Auto-generated method stub 
    super.createFormContent(managedForm); 
    toolkit = managedForm.getToolkit(); 
    form = managedForm.getForm(); 
    toolkit.decorateFormHeading(form.getForm()); 
    form.setText(currVersion.getcName()+currVersion.getvName()); 
    Composite superContainer = form.getBody(); 
    superContainer.setLayout(new GridLayout(2,false)); 
    superContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
    createAreas(superContainer); 
    } 

    private void createAreas(Composite superContainer) { 
    Composite left = toolkit.createComposite(superContainer, SWT.NONE); 
    Composite right = toolkit.createComposite(superContainer, SWT.NONE); 
    GridData leftGrid = new GridData(SWT.FILL,SWT.FILL,true,true); 
    left.setLayoutData(leftGrid); 
    left.setLayout(new GridLayout(1,true)); 
    GridData rightGrid = new GridData(SWT.FILL,SWT.FILL,true,true); 
    right.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true)); 
    right.setLayout(new GridLayout(1,true)); 
    commentArea(right); 
    } 

    private void commentArea(Composite superContainer) { 
    Section section = toolkit.createSection(superContainer, Section.TITLE_BAR|Section.TWISTIE|Section.EXPANDED); 
    section.setText("Comment"); //$NON-NLS-1$ 
    section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
    section.setLayout(new FillLayout()); 

    Composite container = toolkit.createComposite(section, SWT.NONE); 
    container.setLayout(new GridLayout(1, true)); 
    section.setClient(container); 

    ScrolledComposite scrollContainer = new ScrolledComposite(container, SWT.V_SCROLL|SWT.BORDER); 
    scrollContainer.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false)); 
    scrollContainer.setExpandVertical(true); 
    scrollContainer.setAlwaysShowScrollBars(true); 
    Color white = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE); 
    scrollContainer.setBackground(white); 

    Composite scrollInner = new Composite(scrollContainer, SWT.NONE); 
    scrollInner.setBackground(white); 
    scrollInner.setLayout(new GridLayout(1,false)); 

    Label text = toolkit.createLabel(scrollInner, "test1test2test3"); 
    text.setLayoutData(new GridData()); 

    scrollContainer.setContent(scrollInner); 
    //scrollContainer.setMinSize(scrollInner.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

    } 
} 

私の質問:方法commentAreascrolledContainerでラベルのテキスト"test1test2test3"が表示されることがdidntはなぜ を?

答えて

1

ScrolledCompositesetExpandHorizontalメソッドを使用します簡単にテスト可能な何かにあなたのコードだけScrolledComposite部分を抽出

ScrolledComposite scrollContainer = new ScrolledComposite(container, SWT.V_SCROLL|SWT.BORDER); 
scrollContainer.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false)); 
scrollContainer.setExpandVertical(true); 
scrollContainer.setExpandHorizontal(true); // Add this line 

を:

public static void main(final String[] args) { 
    final Display display = new Display(); 
    final Shell shell = new Shell(display); 
    shell.setLayout(new GridLayout()); 

    // Your code below 
    final ScrolledComposite scrollContainer = new ScrolledComposite(shell, SWT.V_SCROLL | SWT.BORDER); 
    scrollContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); 
    scrollContainer.setExpandVertical(true); 
    scrollContainer.setExpandHorizontal(true); // Added 
    scrollContainer.setAlwaysShowScrollBars(true); 
    final Color white = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE); 
    scrollContainer.setBackground(white); 

    final Composite scrollInner = new Composite(scrollContainer, SWT.NONE); 
    scrollInner.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
    scrollInner.setBackground(white); 
    scrollInner.setLayout(new GridLayout(1, false)); 

    final Label text = new Label(scrollInner, SWT.NONE); 
    text.setText("test1test2test3"); 
    text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    scrollContainer.setContent(scrollInner); 
    // End your code 

    shell.pack(); 
    shell.open(); 
    while (!shell.isDisposed()) { 
     if (!display.readAndDispatch()) { 
      display.sleep(); 
     } 
    } 
    display.dispose(); 
} 
+0

それは動作しますが、追加1以上をお願いしたいです問題は、なぜscrolledCompositeはスクロールしませんが、scrollInnerに多くのコンテンツがある場合、scorlledFormスクロールしますか? – star

関連する問題