毕竟,解决方案非常简单 =)
Back 和 Next 按钮在主组合内有自己的父组合:
private Composite createPreviousAndNextButtons(Composite parent) {
// increment the number of columns in the button bar
((GridLayout) parent.getLayout()).numColumns++;
Composite composite = new Composite(parent, SWT.NONE);
// create a layout with spacing and margins appropriate for the font
// size.
GridLayout layout = new GridLayout();
layout.numColumns = 0; // will be incremented by createButton
layout.marginWidth = 0;
layout.marginHeight = 0;
layout.horizontalSpacing = 0;
layout.verticalSpacing = 0;
composite.setLayout(layout);
GridData data = new GridData(GridData.HORIZONTAL_ALIGN_CENTER
| GridData.VERTICAL_ALIGN_CENTER);
composite.setLayoutData(data);
composite.setFont(parent.getFont());
backButton = createButton(composite, IDialogConstants.BACK_ID,
IDialogConstants.BACK_LABEL, false);
nextButton = createButton(composite, IDialogConstants.NEXT_ID,
IDialogConstants.NEXT_LABEL, false);
return composite;
因此,我将重写方法的代码更改为:
@Override
protected void createButtonsForButtonBar(Composite parent) {
super.createButtonsForButtonBar(parent);
Button cancelButton = getButton(IDialogConstants.CANCEL_ID);
cancelButton.setText(CANCEL_LABEL);
Button finishButton = getButton(IDialogConstants.FINISH_ID);
finishButton.setText(FINISH_LABEL);
rejectButton = super.createButton(parent, REJECT_ID, REJECT_LABEL, false);
setButtonLayoutData(rejectButton);
acceptButton = super.createButton(parent, ACCEPT_ID, ACCEPT_LABEL, false);
acceptButton.moveBelow(rejectButton);
setButtonLayoutData(acceptButton);
if (super.getWizard().needsPreviousAndNextButtons()) {
Button nextButton = getButton(IDialogConstants.NEXT_ID);
nextButton.setText(NEXT_LABEL);
Button backButton = getButton(IDialogConstants.BACK_ID);
backButton.setText(BACK_LABEL);
// change composite parent of back and next buttons.
nextButton.setParent(parent);
backButton.setParent(parent);
((GridLayout) parent.getLayout()).numColumns = ((GridLayout) parent.getLayout()).numColumns + 2;
// defines buttons'order
finishButton.moveBelow(null);
cancelButton.moveAbove(finishButton);
nextButton.moveAbove(cancelButton);
acceptButton.moveAbove(nextButton);
rejectButton.moveAbove(acceptButton);
backButton.moveAbove(rejectButton);
}
}
=)