0

SWTのTabFolderの下に2つのエキスパンドバーを作成しました。そして、タブフォロダーのレイアウトをFillLayout(SWT.HORIZONTAL)に設定しました。タブフォルダに2つの拡張バーが表示されています。しかし、タブフォルダを同じレイアウトのCTabFolderに変更すると、CTabFolderの下にエキスパンドバーが表示されません。何が問題になる可能性がありますか?そのためのパラメータを設定する必要がありますか?TabFolderとCTabFolderについては、以下のコードを参照してください。

TabFolderのコード:

public class Snippet223 {

    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());
        shell.setText("ExpandBar Example");
        final TabFolder folder = new TabFolder(shell, SWT.BORDER);
        folder.setLayout(new FillLayout(SWT.HORIZONTAL));
        ExpandBar bar = new ExpandBar(folder, SWT.V_SCROLL);
        ExpandBar bar1 = new ExpandBar(folder, SWT.V_SCROLL);
        Image image = display.getSystemImage(SWT.ICON_QUESTION);
        // First item
        createContentsForExpandableBar(bar, image);
        createContentsForExpandableBar(bar1, image);
        shell.setSize(400, 350);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }

    private static void createContentsForExpandableBar(ExpandBar bar,
            Image image) {
        Composite composite = new Composite(bar, SWT.NONE);
        GridLayout layout = new GridLayout();
        layout.marginLeft = layout.marginTop = layout.marginRight = layout.marginBottom = 10;
        layout.verticalSpacing = 10;
        composite.setLayout(layout);
        Button button = new Button(composite, SWT.PUSH);
        button.setText("SWT.PUSH");
        button = new Button(composite, SWT.RADIO);
        button.setText("SWT.RADIO");
        button = new Button(composite, SWT.CHECK);
        button.setText("SWT.CHECK");
        button = new Button(composite, SWT.TOGGLE);
        button.setText("SWT.TOGGLE");
        ExpandItem item0 = new ExpandItem(bar, SWT.NONE, 0);
        item0.setText("What is your favorite button");
        item0.setHeight(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
        item0.setControl(composite);
        item0.setImage(image);
    }

}

CTabFolderのコード:

public class Snippet223 {

    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());
        shell.setText("ExpandBar Example");
        final CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
        folder.setLayout(new FillLayout(SWT.HORIZONTAL));
        ExpandBar bar = new ExpandBar(folder, SWT.V_SCROLL);
        ExpandBar bar1 = new ExpandBar(folder, SWT.V_SCROLL);
        Image image = display.getSystemImage(SWT.ICON_QUESTION);
        // First item
        createContentsForExpandableBar(bar, image);
        createContentsForExpandableBar(bar1, image);
        shell.setSize(400, 350);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }

    private static void createContentsForExpandableBar(ExpandBar bar,
            Image image) {
        Composite composite = new Composite(bar, SWT.NONE);
        GridLayout layout = new GridLayout();
        layout.marginLeft = layout.marginTop = layout.marginRight = layout.marginBottom = 10;
        layout.verticalSpacing = 10;
        composite.setLayout(layout);
        Button button = new Button(composite, SWT.PUSH);
        button.setText("SWT.PUSH");
        button = new Button(composite, SWT.RADIO);
        button.setText("SWT.RADIO");
        button = new Button(composite, SWT.CHECK);
        button.setText("SWT.CHECK");
        button = new Button(composite, SWT.TOGGLE);
        button.setText("SWT.TOGGLE");
        ExpandItem item0 = new ExpandItem(bar, SWT.NONE, 0);
        item0.setText("What is your favorite button");
        item0.setHeight(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
        item0.setControl(composite);
        item0.setImage(image);
    }

}
4

1 に答える 1

2

You'll need to create a TabItem/CTabItem under the TabFolder/CTabFolder and add the content to that. You shouldn't be setting a layout on the tab folder itself. From the JavaDoc for CTabFolder:

Note that although this class is a subclass of Composite, it does not make sense to set a layout on it.

于 2012-07-24T11:57:42.480 に答える