我已经实现了一个带有2个WizardPages的JFace向导。
默认情况下,第一个WizardPage具有以下4个按钮:
现在我想在取消按钮上设置默认焦点。我该怎么做?
删除焦点并将其设置为某些对页面内容的控制也可以。
我尝试将焦点设置为WizardPage内容布局中的Button,但这只是让我第二次关注immediateButton
。 “下一步”按钮的焦点仍然存在,“下一步”按钮对按下回车做出反应,这是我想要避免的。
@Override
public void setVisible(boolean visible) {
super.setVisible(visible);
if (visible) {
immediateButton.setFocus();
}
}
如何访问“对话框”按钮并更改其焦点?
答案 0 :(得分:1)
“下一步”按钮实际上没有焦点,而是“Shell默认”按钮。
WizardDialog
中的逻辑使Next或Finish成为默认按钮,似乎没有办法改变它。
您可以通过在向导页面中调用getShell().setDefaultButton(button)
来覆盖它。
更新:对此进行测试,您可以在setVisible
中执行此操作,但您需要使用Display.asyncExec
来使代码在正确的时间运行:
final Shell shell = getShell();
shell.getDisplay().asyncExec(() -> shell.setDefaultButton(immediateButton));
上面的适用于Java 8,适用于Java 7或更早版本:
shell.getDisplay().asyncExec(new Runnable()
{
@Override
public void run()
{
shell.setDefaultButton(immediateButton);
}
});