gpt4 book ai didi

java - 为什么eclipse swt浏览器没有焦点?

转载 作者:行者123 更新时间:2023-12-01 16:29:49 24 4
gpt4 key购买 nike

我正在开发 Eclipse RCP 应用程序。我有一个继承自 IWorkbenchPreferencePage 的首选项页面。在首选项页面中,我有一个按钮,单击该按钮会生成一个外壳。 shell 始终处于失焦状态,并且在首选项页面被处理之前无法与之交互。

有什么方法可以将焦点设置在 shell 上吗?

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

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

关于java - 为什么eclipse swt浏览器没有焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62072422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com