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

时间:2016-08-26 09:23:23

标签: java focus swt messagebox messagedialog

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

这适用于有视力的人或使用屏幕阅读软件的盲人。但是盲人使用可刷新的盲文显示器(只有文本,只有一行40个字符)在对话框中阅读短信有问题,因为对话框的焦点在按钮上,所以可刷新的盲文显示器显示文本按钮。盲人必须向上滚动才能找到短信。

有时候滚动很难,他们不得不抱怨。如果焦点在文本消息上会更好,然后他们可以在阅读文本时向下滚动,然后在结尾处是按钮文本。

如何使用SWT MessageDialogMessageBox类来管理短信的焦点?

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

1 个答案:

答案 0 :(得分:1)

除了名称中的“消息”部分,MessageBoxMessageDialog根本不同。

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

MessageDialog由JFace提供,可以自定义。如果您确实需要更改默认焦点行为,则应仅使用MessageDialog

要将焦点放在显示消息的标签上,您可以覆盖create(),如下所示:

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