如何在 SWT MessageDialog 或 MessageBox 中将焦点设置为文本而不是按钮?

How can I set focus on text instead of button in SWT MessageDialog or MessageBox?

我目前正在为盲人开发一个程序。在我的程序中,我有几个使用 SWT MessageDialogMessageBox 实现的对话框。

这对于使用屏幕阅读软件的视力正常的人或盲人来说效果很好。但是使用可刷新盲文显示器(纯文本,只有一行 40 个字符)的盲人在阅读对话框中的文本消息时遇到问题,因为对话框的焦点在按钮上,因此可刷新盲文显示器显示文本按钮。盲人必须向上滚动才能找到短信。

有时滚动太难了,他们不得不抱怨。如果焦点在文本消息上就更好了,然后他们可以在阅读文本的过程中向下滚动,最后是按钮文本。

如何使用 SWT MessageDialogMessageBox class 来管理文本消息的焦点?

我不想创建自己的 MessageDialog class,因为我已经使用了 SWT 库的多个选项。

除了名称中的 'Message' 部分外,MessageBoxMessageDialog 根本不同。

MessageBox 是 SWT 的一部分,使用本机平台的组件来显示对话框,因此应用程序代码无法更改其行为。

MessageDialog由JFace提供,可以自定义。如果你真的需要改变默认的焦点行为,你应该只使用 MessageDialog

要将焦点放在显示消息的标签上,您可以像这样覆盖 create()

class MyMessageDialog extends MessageDialog {
  @Override
  public void create() {
    super.create();
    if( usingBraille ) {
      messageLabel.forceFocus();
    }
  }
}