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

标签 java focus swt messagebox messagedialog

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

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

有时滚动太难了,他们不得不提示这一点。如果焦点位于文本消息上,然后他们可以在阅读文本时向下滚动,最后是按钮文本,那就更好了。

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

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

最佳答案

除了名称中的“Message”部分之外,MessageBoxMessageDialog 本质上是不同的。

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

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

要将焦点集中到显示消息的标签上,您可以像这样重写create():

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

关于java - 如何将焦点设置在 SWT MessageDialog 或 MessageBox 中的文本而不是按钮上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39162848/

相关文章:

java - 以不同的方式重用相同的功能

java - 向 outputPanel JSF 添加可放置和 ajax 行为

java - 在 JButton 的中心画一个圆

java - 将自定义图像添加到 Eclipse SWT

java - SWT/Swing -> 线程 hell

java - 从一个字段切换到另一个字段不起作用(在 Java SWT 中又称为 "tab order")

java - 比较 JUnit 中的两个对象列表

java - 如何链接两个数组,以便能够从另一个数组获取要使用的值?

java - 防止专注于创建 Activity

Safari 选项卡焦点在 5.1.2 中不起作用