如何在SWT中拆分SASH?

时间:2013-12-11 13:50:25

标签: java swt

我创建了一个包含两个部分的应用程序:

      1. tree viewer
      2. table viewer + messages

看起来像

                 -------------------------------
                 -   tree    -         table   -   
                 -           -                 -
                 -           - -----------------             
                 -           -    messages             
                 -------------------------------

我试图从中构建Sash将分割树区域和表+消息区域。 然后我想将表区域拆分为两个区域表和消息。

当我尝试对表和消息进行第二次拆分时收到错误消息。

这是代码

  SashForm sashForm = new SashForm(parent, SWT.HORIZONTAL);
    Composite treeComposite = new Composite(sashForm, SWT.BORDER);
    Composite detailsCompositePart = new Composite(sashForm, SWT.BORDER);

    GridLayout parentSideGridLayout = new GridLayout();
    parentSideGridLayout.numColumns = 1;
    detailsCompositePart.setLayout(parentSideGridLayout);

    sashForm.setWeights(new int[] { 300, 700 });
    createTreePart(treeComposite )

    SashForm verticalForm = new SashForm(detailsCompositePart, SWT.VERTICAL);
    verticalForm.setWeights(new int[] { 800, 200 });

    detailsComposite = new Composite(sashForm, SWT.BORDER);
                createDeatilsPart(detailsComposite )
    messageComposite = new Composite(sashForm, SWT.NONE);
             createMessagePart(messageComposite )

我在此声明后收到错误消息

        verticalForm.setWeights(new int[] { 800, 200 });
当我试图做第二个shash时,

“参数无效” 你能告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您收到该错误,因为verticalForm没有两个孩子。您必须使用sashForm替换两个Composite的构造函数中的verticalForm

SashForm verticalForm = new SashForm(detailsCompositePart, SWT.VERTICAL);

detailsComposite = new Composite(verticalForm , SWT.BORDER);
createDeatilsPart(detailsComposite);
messageComposite = new Composite(verticalForm , SWT.NONE);
createMessagePart(messageComposite);

verticalForm.setWeights(new int[] { 800, 200 });