2012-09-30 51 views
1

我想在我的对话框窗口中显示可滚动的组合。与ScrolledComposite的Jface对话框

但它没有得到滚动条。我也没有得到“确定”“取消”按钮。

如何解决?

public class MyDialog extends Dialog { 

    public MyDialog (Shell parentShell) { 
    super(parentShell);  
    } 

    protected void configureShell(Shell newShell) { 
    super.configureShell(newShell); 
    newShell.setText("test"); 
    newShell.setSize(200, 100); 
    } 

    protected Control createDialogArea(Composite parent) { 
     ScrolledComposite sc = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); 


    Composite composite = new Composite(sc, SWT.NONE); 
    composite.setLayout(new FillLayout(SWT.VERTICAL)); 

    new Label(composite, SWT.NONE).setText("1111"); 
    new Label(composite, SWT.NONE).setText("2222"); 
    new Label(composite, SWT.NONE).setText("3333"); 
    new Label(composite, SWT.NONE).setText("4444"); 
    new Label(composite, SWT.NONE).setText("5555"); 
    new Label(composite, SWT.NONE).setText("6666"); 
    new Label(composite, SWT.NONE).setText("7777"); 

    sc.setContent(composite); 
    sc.setExpandHorizontal(true); 
    sc.setExpandVertical(true); 


    return parent; 


    } 

enter image description here

回答

1

好了,我几乎得到它的工作。但是,在底部有一些空白处,对话框按钮就是这样。如果这不妨碍你,或者你要添加按钮,下面的代码将做你想要的。如果不是,我不知道如何帮助你。

public class MyDialog extends Dialog 
{ 

    protected MyDialog(Shell parentShell) { 
     super(parentShell); 
    } 

    protected void configureShell(Shell newShell) { 
     super.configureShell(newShell); 
     newShell.setText("test"); 
     newShell.setSize(200, 100); 
    } 

    protected void createButtonsForButtonBar(Composite parent) { 
    } 

    protected Control createDialogArea(Composite parent) { 
     Composite content = (Composite) super.createDialogArea(parent); 
     content.setLayout(new FillLayout()); 

     ScrolledComposite sc = new ScrolledComposite(content, SWT.H_SCROLL 
       | SWT.V_SCROLL | SWT.BORDER); 

     Composite composite = new Composite(sc, SWT.NONE); 
     composite.setLayout(new FillLayout(SWT.VERTICAL)); 

     new Label(composite, SWT.NONE).setText("1111"); 
     new Label(composite, SWT.NONE).setText("2222"); 
     new Label(composite, SWT.NONE).setText("3333"); 
     new Label(composite, SWT.NONE).setText("4444"); 
     new Label(composite, SWT.NONE).setText("5555"); 
     new Label(composite, SWT.NONE).setText("6666"); 
     new Label(composite, SWT.NONE).setText("7777"); 

     sc.setContent(composite); 
     sc.setExpandHorizontal(true); 
     sc.setExpandVertical(true); 
     sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

     return parent; 
     } 
} 

enter image description here

然而,我假设你打算使用对话框按钮。否则,您可以简单地使用带有复合的外壳,如前面发布的示例中所示...

+0

这不会帮助 – user1658192

+0

@ user1658192此外删除此行:'newShell.setSize(200,100);' – Baz

+0

否,这是对话框的大小。它应该是固定的。 – user1658192