为什么Eclipse swt浏览器不聚焦?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Eclipse swt浏览器不聚焦?相关的知识,希望对你有一定的参考价值。

我正在处理Eclipse RCP应用程序。我有一个从IWorkbenchPreferencePage继承的首选项页面。在首选项页面中,我有一个按钮,当单击该按钮时会生成一个外壳。该外壳始终不清晰,并且在放置首选项页面之前无法与之交互。

有什么方法可以将焦点放在外壳上吗?

这是首选项页面的一些伪代码:

public class PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

  AuthenticationManager authenticationManager = new AuthenticationManager();

  @Override
  protected void createFieldEditors() {
    final Button login = new Button(getFieldEditorParent(), SWT.PUSH);
    login.setText("Login")
    login.addSelectionListener(new SelectionListener() {
      @Override
      public void widgetSelected(final SelectionEvent se) {
        authenticationManager.run(getShell().getDisplay());
      }
    }
  }
}

public AuthenticationManager {
  public void run(@Nullable Display optionalDisplay) {
    display.asyncExec(() -> {
      // set the url & add listeners
    }
  }
}

谢谢!

答案

我通过传递外壳而不是显示来解决此问题。我仍然找不到合适的swt文档来说明为什么这样做,但是无论如何,这就是我的解决方案现在的样子:

public class PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

  AuthenticationManager authenticationManager = new AuthenticationManager();

  @Override
  protected void createFieldEditors() {
    final Button login = new Button(getFieldEditorParent(), SWT.PUSH);
    login.setText("Login")
    login.addSelectionListener(new SelectionListener() {
      @Override
      public void widgetSelected(final SelectionEvent se) {
        authenticationManager.run(getShell());
      }
    }
  }
}

public AuthenticationManager {
  public void run(@Nullable Shell optionalShell) {
    final Display display;
    if (optionalShell == null) {
        if (PlatformUI.isWorkbenchRunning()) {
            display = PlatformUI.getWorkbench().getDisplay();
        } else {
            display = null;
        }
    } else {
        display = optionalShell.getDisplay();
    }


    display.syncExec(() -> {
      // set the url & add listeners
    }
  }
}

以上是关于为什么Eclipse swt浏览器不聚焦?的主要内容,如果未能解决你的问题,请参考以下文章

无法打开eclipse,出现如下错误

在Eclipse中用SWT设计界面

eclipse 如何安装 swt?

Eclipse SWT开发教程以及一个连连看游戏的代码实现下载

错误: 程序包org.eclipse.swt.graphics不存在/swt.jar下载方法

SWT(JFace) Wizard(Eclipse插件编程必备)