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

      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”操作时,“参数无效”
您能告诉我如何解决此问题吗?

最佳答案

您收到该错误,因为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 });

关于java - 如何在SWT中拆分SASH?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20520921/

10-11 22:19
查看更多