gpt4 book ai didi

java - 如何更改 JFace 向导对话框中的后退和下一个按钮位置?

转载 作者:行者123 更新时间:2023-12-04 05:36:36 24 4
gpt4 key购买 nike

我创建了一个自定义 JFace 向导对话框来添加按钮。我找到了一种方法来改变它们在布局中的位置(比如将它们放在取消和完成按钮之间)但是当我尝试将它们放在上一个和下一个按钮之间时它不起作用。

这是代码:

@Override
protected void createButtonsForButtonBar(Composite parent) {
super.createButtonsForButtonBar(parent);

Button nextButton = getButton(IDialogConstants.NEXT_ID);
nextButton.setText(NEXT_LABEL);
Button backButton = getButton(IDialogConstants.BACK_ID);
backButton.setText(BACK_LABEL);
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);
rejectButton.moveAbove(nextButton);
setButtonLayoutData(rejectButton);

acceptButton = super.createButton(parent, ACCEPT_ID, ACCEPT_LABEL, false);
acceptButton.moveBelow(rejectButton);
setButtonLayoutData(acceptButton);

}

当我查看向导时,我发现“上一个”和“下一个”按钮之间的空间比其他按钮更窄。看起来他们被捆绑在一起或类似的东西......

是否有另一种解决方案来改变他们的立场?

谢谢:)

最佳答案

毕竟,解决方案很简单 =)

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);
}
}

=)

关于java - 如何更改 JFace 向导对话框中的后退和下一个按钮位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11842770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com