【问题标题】:How can I set focus on text instead of button in SWT MessageDialog or MessageBox?如何在 SWT MessageDialog 或 MessageBox 中将焦点设置在文本而不是按钮上?
【发布时间】:2016-08-26 09:23:23
【问题描述】:

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

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

有时滚动是如此困难,以至于他们不得不抱怨这一点。如果焦点在文本消息上会更好,然后他们可以在阅读文本时向下滚动,然后是按钮文本。

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

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

【问题讨论】:

    标签: java focus swt messagebox messagedialog


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 听起来不错。我会试一试,然后告诉你结果。谢谢!
    • 它有效,谢谢!请注意,我使用 JAWS 在 2 种模式下对其进行了测试,Line 和 Structured。在结构化模式下,我不必将焦点更改为文本,但在行模式下我必须这样做。所以,现在取决于盲人用户更喜欢如何使用 JAWS。
    猜你喜欢
    • 2011-12-09
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 2021-05-21
    • 2017-01-02
    • 2021-04-12
    • 1970-01-01
    • 2016-07-23
    相关资源
    最近更新 更多