【问题标题】:How to change Back and Next Button position in a JFace Wizard Dialog?如何在 JFace 向导对话框中更改后退和下一个按钮的位置?
【发布时间】:2012-08-07 09:16:20
【问题描述】:

我创建了一个自定义 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);

}

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

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

谢谢你:)

【问题讨论】:

    标签: java eclipse swt jface wizard


    【解决方案1】:

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

    后退和下一步按钮在主复合体中有自己的父复合体:

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

    =)

    【讨论】:

      猜你喜欢
      • 2016-08-24
      • 1970-01-01
      • 2014-02-19
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多