如何在Eclipse RCP首选项页面中禁用键输入行为

如何在Eclipse RCP首选项页面中禁用键输入行为,eclipse,default,rcp,behavior,Eclipse,Default,Rcp,Behavior,在我的应用程序中,我有几个首选页面。在某些情况下,用户必须编辑一些项目。如果用户使用Enter键,则整个首选项对话框将关闭,原因是“确定”按钮具有焦点 那么我怎样才能禁用这种行为呢 我可以在页面上的任何项目上设置焦点,但按Enter键将强制关闭对话框 扩展默认对话框并覆盖以下方法 @Override protected void createButtonsForButtonBar(Composite parent) { // Its the same as super.createBut

在我的应用程序中,我有几个首选页面。在某些情况下,用户必须编辑一些项目。如果用户使用Enter键,则整个首选项对话框将关闭,原因是“确定”按钮具有焦点

那么我怎样才能禁用这种行为呢


我可以在页面上的任何项目上设置焦点,但按Enter键将强制关闭对话框

扩展默认对话框并覆盖以下方法

@Override
protected void createButtonsForButtonBar(Composite parent) {
    // Its the same as super.createButtonsForButtonBar(), but makes no default buttons by sending false.
    createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false);
    createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}

您可以在目标小部件上使用此代码

widget.addListener(SWT.Traverse, new Listener() {
    public void handleEvent(Event e) {
    if (e.detail == SWT.TRAVERSE_RETURN)
        e.doit = false;
    }
});

你的问题解决了吗?我也面临着同样的问题。这并不能解决我的问题。我不使用dialog的任何实例。相反,我使用的是一个首选项页面(org.eclipse.jface.preference.PreferencePage)。没有任何方法可以过度渲染按钮的默认行为……虽然这段代码可以回答这个问题,但最好在不介绍其他人的情况下解释它是如何解决问题的,以及为什么要使用它。从长远来看,纯代码答案没有用处。好的。这将很有帮助:当用户希望在对话框中激活默认的[OK]按钮时,此遍历侦听器用于禁用[enter]键按下操作。