0

ここに、ドメインのすべての GUI 作業を実際に行う私のコードがあります (添付の写真に含まれる右側)。この関数では、「newTabFolder」で複合「テスト」を作成しています。その上に「sc」を作成し、その上に複合「compositeInTab」を作成し、すべてのウィジェットを「compositeInTab」に配置した後、複合「テスト」を配置するためのTabItemを作成しています。

public DomainUI(Composite composite, TabFolder newTabFolder, boolean comingFromSelf)
{
    Composite test = new Composite(newTabFolder,SWT.NONE);
    test.setLayout(new FillLayout());
    ScrolledComposite sc = new ScrolledComposite(test, SWT.V_SCROLL|SWT.H_SCROLL);
    final Composite compositeInTab = new Composite(sc, SWT.NONE);
    sc.setExpandHorizontal(true); 
    sc.setExpandVertical(true);
    sc.setMinHeight(compositeInTab.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
    sc.setMinWidth(compositeInTab.computeSize(SWT.DEFAULT, SWT.DEFAULT).x);
    sc.setContent(compositeInTab);
    compositeInTab.setLayout(null);
    sc.setAlwaysShowScrollBars(true);

    /*HERE I AM CREATING LABELS AND TEXT FIELDS AND SETTING THEIR BOUNDS*/
    systemCodeLabel = new Label(compositeInTab, 0);
    systemCodeText = new Text(compositeInTab, SWT.BORDER);
    systemCodeLabel.setText("System Code");
    systemCodeLabel.setBounds(350, 60, 100, 15);
    systemCodeText.setBounds(480, 60, 150, 17);
    // CREATION OF LABELS AND TEXTFIELDS ENDED

    // CREATION OF TABLE STARTS
    myTable = new CreateTable(compositeInTab, 1);
    myTable.setBounds(50, 230, 0, 0);
    myTable.table.setSize(myTable.table.computeSize(570, 250));

    //here i filled data in table

    for(int i=0; i<myTable.table.getColumnCount(); i++)
    {
        myTable.table.getColumn(i).pack();
     myTable.table.getColumn(i).setWidth(myTable.table.getColumn(i).getWidth()+10);
    }

    TabItem tabItem1 = new TabItem(newTabFolder, SWT.NONE);
    tabItem1.setText("Domain");
    tabItem1.setControl(test);
    newTabFolder.setBounds(0, 0, 480, 300);
}
4

1 に答える 1

0

レイアウトの問題のようです。私は少しいじって、なんとかこれを機能させることができました:

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

    ScrolledComposite scrollComp = new ScrolledComposite(shell, SWT.V_SCROLL | SWT.H_SCROLL);
    Composite innerComp = new Composite(scrollComp, SWT.NONE);
    innerComp.setLayout(new GridLayout(4, true));

    for(int i = 0; i < 32; i++)
        new Button(innerComp, SWT.PUSH).setText("Button");

    scrollComp.setMinHeight(innerComp.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
    scrollComp.setMinWidth(innerComp.computeSize(SWT.DEFAULT, SWT.DEFAULT).x);
    scrollComp.setContent(innerComp);
    scrollComp.setExpandHorizontal(true);
    scrollComp.setExpandVertical(true);
    scrollComp.setAlwaysShowScrollBars(true);

    shell.pack();
    shell.open();

    shell.setSize(200, 200);

    while(!shell.isDisposed())
    {
        if(!display.readAndDispatch())
            display.sleep();
    }
}

スクロールバーが表示されます。ただし、シェルのレイアウトを に変更するとGridLayout、機能しなくなります。たぶん、レイアウトの「組み合わせ」が問題のようです...

于 2012-08-24T15:24:35.190 に答える