1

場合は、 TopTaskGroup (左のもの) が wi​​ndow のサイズ変更中に「余分な垂直方向のスペースをつかむ」ことができますここに画像の説明を入力が、 NewTaskGroup (右のもの) は、TooBar を追加した後 (createAddBtnOnGroupメソッドを参照)、サイズを変更しても大きくなりません。窓。何故ですか?

(2 列の GridLayout を持つシェル インスタンスがあります)

ここに画像の説明を入力

コードはここにあります:

private void createTaskWidgets() {
    createTopTaskGroup();
    createNewTaskGroup();
}

private void createTopTaskGroup() {
    Group topTasksGroup = new Group(shell, SWT.SHADOW_NONE);
    topTasksGroup.setText(TaskConsts.TOP_TASK_LIST);

    topTasksTable = new TaskTable(topTasksGroup, TaskTable.SORT_BY_VOTES, iteration, this);
    topTasksTable.setLayoutData(getTableGridData() );

    topTasksGroup.setLayout(new GridLayout() );
    topTasksGroup.setLayoutData(getTableGridData() );
    topTasksGroup.pack();
}

private void createNewTaskGroup() {
    Group newTasksGroup = new Group(shell, SWT.SHADOW_NONE);
    newTasksGroup.setText(TaskConsts.NEW_TASK_LIST);

    newTasksTable = new TaskTable(newTasksGroup, TaskTable.SORT_BY_CREATION_TIME, iteration, this);
    topTasksTable.setLayoutData(getTableGridData() );

    ToolBar actionToolBar = createAddBtnOnGroup(newTasksGroup);

    newTasksGroup.setLayout(new GridLayout() );
    newTasksGroup.setLayoutData(getTableGridData() );
    newTasksGroup.layout();
    newTasksGroup.pack();

    // set actionToolBar's location to newTasksGroup's right-top position
    actionToolBar.setLocation(
            newTasksGroup.getLocation().x + newTasksGroup.getSize().x
                    - actionToolBar.getSize().x - 5,
            newTasksGroup.getLocation().y - 2);
}

private GridData getTableGridData() {
    GridData gridData = new GridData(0, SWT.FILL, false, true);
    return gridData;
}

private ToolBar createAddBtnOnGroup(Group newTasksGroup) {
    ToolBar actionToolBar = new ToolBar(newTasksGroup, SWT.HORIZONTAL | SWT.RIGHT);

    addTaskToolItem = new ToolItem(actionToolBar, SWT.PUSH | SWT.RIGHT);
    addTaskToolItem.setImage(new Image(display, TaskConsts.ICON_PLUS));

    final MainWindow mainWindow = this;
    addTaskToolItem.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            new CreateTask(getShell(), mainWindow);
        }
    });

    GridData gridData = new GridData();
    gridData.exclude = true;
    actionToolBar.setLayoutData(gridData);

    actionToolBar.pack();

    return actionToolBar;
}

private void organize() {
    GridLayout gridLayout = new GridLayout(2, false);
    shell.setLayout(gridLayout);
    shell.pack();
}

よろしくお願いします〜

4

1 に答える 1

2

素晴らしい問題の説明をありがとう!

これは単純なコピー&ペーストのバグのようです。

createNewTaskGroup メソッドの 4 行目は、

topTasksTable.setLayoutData(getTableGridData() );

しかし

newTasksTable.setLayoutData(getTableGridData() );
于 2011-06-24T09:30:42.977 に答える