1
TooBarを追加した後で、ウィンドウをリサイズしているときにTopTaskGroup(左のもの) (createAddBtnOnGroup
メソッドを参照してください)、ウィンドウのサイズを変更しても拡大しません。何故ですか?SWTコントロールが "余分な垂直スペースを奪う"ことを拒否する
(私は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();
}
おかげで〜あなたの優れた問題の説明のための
すべきではない – draw
...私はそれをリファクタリングするつもりだった、リファクタリングのための任意のアイデアをありがとう!私は、70%が、重複したコードを省略するためにリファクタリングする必要があると確信しています。しかし、私はまだ重複したコードの量が相対的に小さいと思っています...それをリファクタリングする明白な方法はありません〜 – draw