SWT:如何从动作创建普通按钮

时间:2010-12-11 13:49:11

标签: java swt action jface

我需要Button的{​​{1}}版本。我应该自己这样做,还是JFace中已有可以重用的东西?注意,我需要按钮实例,因为我想将它作为对话框中的默认按钮。

使用IAction我似乎无法获取按钮实例。

2 个答案:

答案 0 :(得分:3)

我认为最好使用getWidget()中的ActionContributionItem方法获取与Button相关联的ActionContributionItem实例。

    ActionContributionItem aci = new ActionContributionItem(action);
    ai.fill(parent);
    Button widget = (Button) ai.getWidget();

答案 1 :(得分:1)

fill(parent)后,我认为你可以调用parent.getChildren()。我希望新按钮将是返回的Control []中的最后一个条目。因此:

Control kids[] = parent.getChildren();

if (kids != null && kids.length != 0) {
  getShell().setDefaultButton( (Button)kids[kids.length - 1] );

}

如果它没有停留在最后,你必须得到前后的孩子列表,并找到新的条目......但它几乎肯定会在最后加上。