在 SWT-Widgets 上自动生成 ID

2023-11-26

有没有办法在 SWT-Widgets 上自动生成 ID,以便 UI-Tests 可以引用它们?我知道我可以使用 seData 手动设置 id,但我想以某种通用的方式为现有应用程序实现此功能。


您可以使用以下命令为应用程序中的所有 shell 递归分配 ID:Display.getCurrent().getShells(); and Widget.setData();.

设置 ID

Shell []shells = Display.getCurrent().getShells();

for(Shell obj : shells) {
    setIds(obj);
}

您可以使用以下方法访问应用程序中所有活动的(未处置的)ShellDisplay.getCurrent().getShells();。您可以循环遍历每个的所有子项Shell并为每一个分配一个IDControl用方法Widget.setData();.

private Integer count = 0;

private void setIds(Composite c) {
    Control[] children = c.getChildren();
    for(int j = 0 ; j < children.length; j++) {
        if(children[j] instanceof Composite) {
            setIds((Composite) children[j]);
        } else {
            children[j].setData(count);
            System.out.println(children[j].toString());
            System.out.println(" '-> ID: " + children[j].getData());
            ++count;
        }
    }
}

If the Control is a Composite它可能在组合内部有控件,这就是我在示例中使用递归解决方案的原因。


通过ID查找控件

现在,如果你想在你的 shell 中找到一个 Control,我会建议一种类似的递归方法:

public Control findControlById(Integer id) {
    Shell[] shells = Display.getCurrent().getShells();

    for(Shell e : shells) {
        Control foundControl = findControl(e, id);
        if(foundControl != null) {
            return foundControl;
        }
    }
    return null;
}

private Control findControl(Composite c, Integer id) {
    Control[] children = c.getChildren();
    for(Control e : children) {
        if(e instanceof Composite) {
            Control found = findControl((Composite) e, id);
            if(found != null) {
                return found;
            }
        } else {
            int value = id.intValue();
            int objValue = ((Integer)e.getData()).intValue();

            if(value == objValue)
                return e;
        }
    }
    return null;
}

用方法findControlById()你可以很容易地找到一个Control通过它的 ID。

    Control foundControl = findControlById(12);
    System.out.println(foundControl.toString());

Links

  • SWT API:小部件
  • SWT API:显示
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SWT-Widgets 上自动生成 ID 的相关文章

  • Eclipse 在源代码管理中保存操作

    我们希望找到一种在签入之前执行代码标准的 轻量级 方法 我们真的很喜欢使用 Eclipse 内置的想法保存操作 go to Preferences gt gt Java gt gt Editor gt gt Save Actions 其中有
  • Hibernate注解放置问题

    我有一个我认为很简单的问题 我见过两种方式的例子 问题是 为什么我不能将注释放在字段上 让我举一个例子 Entity Table name widget public class Widget private Integer id Id G
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • JAVA - Xuggler - 组合 MP3 音频文件和 MP4 电影时播放视频

    使用 JAVA 和 Xuggler 以下代码组合 MP3 音频文件和 MP4 电影文件并输出组合的 mp4 文件 我希望在合并音频和视频文件时应自动播放输出视频文件 String inputVideoFilePath in mp4 Stri
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • 将 Azure AD 高级自定义角色与 Spring Security 结合使用以进行基于角色的访问

    我创建了一个演示 Spring Boot 应用程序 我想在其中使用 AD 身份验证和授权 并使用 AD 和 Spring Security 查看 Azure 文档 我执行了以下操作 package com myapp contactdb c
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • 如何从主机外部(同一网络)连接到 docker 容器 [OSX 10.11]

    设置 计算机 A 这是 Docker 机器 默认 运行的地方 虚拟盒子 default 正在运行一个名为 Odoo 的容器 默认 是使用创建的Docker的安装过程 奥杜 是 创建使用Odoo的安装过程 计算机 B 这是同一局域网 LAN
  • 修改 CDO.Message 对象中附件的内容类型

    当我尝试使用 VBScript 将 MHTML 文件作为电子邮件附件添加到电子邮件中时 ContentMediaType被错误地设置为 message rfc822 RFC 822 据我了解 根据 Microsoft 的说法这是正确的 但根
  • 如何显示 NSDocument 目录中的所有图像

    首先 我从照片库中选择图像到 ALAsset 库 然后将图像存储在 ALAsset 库路径的文档目录中 我正在使用此代码将图像存储在 ALAsset 库的文档目录中 它工作完美 现在我想在表视图中显示存储在文档目录中的所有图像 我该怎么做
  • Python 从 tar.gz 导入库?

    我正在开发一个没有 root 访问权限的盒子 但是 有一个文件夹 share 可供每个人读取和写入 我想找到一种方法来放置 python 库 以便每个人都可以访问和使用它们 我发现我可以将 Egg 文件放在 share pythonLib
  • Swift 中哪些值类型支持写时复制?

    我读到了关于 Swift 中数组的写时复制实现here 与标准库中的所有可变大小集合一样 数组使用写时复制优化 阵列的多个副本共享同一存储 直到您修改其中一个副本 当发生这种情况时 被修改的阵列将用其自身唯一拥有的副本替换其存储 然后就地修
  • Android 中的 Intent 与 Content Provider

    我是android应用程序开发的新手 在研究基本的android组件时 我对意图和内容提供者感到困惑 因为两者都被用来将数据从一个应用程序 组件发送到另一个应用程序 组件 如果有意图 我们可以使用捆绑或附加功能发送数据 那么为什么我们要使用
  • 10 月 15 日 Windows 更新后 MVC 应用程序中断

    今天早上我醒来发现我的服务器上的 MVC 4 Web 应用程序已损坏 错误信息是 An exception of type System IO FileNotFoundException occurred in mscorlib dll b
  • 错误:mime-types-data 需要 Ruby 版本 >= 2.0

    我最近在 vmware fusion 中安装了干净的 ubuntu 14 04 虚拟机并更新了它 我正在尝试通过安装 mime tyes data sudo gem install mime types data v 3 2015 1120
  • 带 H:MM:SS 的精密计时器

    如何用 H MM SS 显示天文计时器 我读到默认显示 MM SS 和 H MM SS 我只找到了 MM SS 这是我的 MM SS 代码 带有开始和停止按钮 public class MainActivity extends AppCom
  • Docker-compose:应用程序容器无法连接到 Postgres

    使用 docker compose 我尝试从以下位置查看 Flask 应用程序manage py runserver与 postgres 图像连接 但出现以下错误 sqlalchemy exc OperationalError psycop
  • UserHostAddress 给出错误的 IP

    我收集了用户访问我的网站的 IP 地址的统计数据 我注意到只有两个 IP 地址 172 16 16 1 和 172 16 16 248 我用来确定 IP 地址的属性是 Request UserHostAddress IP地址信息丢失可能是什
  • 如何从 Vue.js 数组中删除项目

    我是 vue js 2 的新手 目前正在开发一个简单的事件应用程序 我已成功添加事件 但现在我想通过单击按钮来删除事件 HTML div class list group div class list group item h4 class
  • Python:无法在网页中使用selenium下载

    我的目的是从下载一个 zip 文件这是这个网页中的一个链接https www shareinvestor com prices price download html type price download all stocks bursa
  • QT4拖动窗口没有标题栏

    我正在开发的应用程序有一个自定义 UI 需要我从主窗口中删除标题栏 不幸的是 我不知道如何制作它 以便我可以在屏幕上移动应用程序 我删除标题栏的代码如下 MainWindow MainWindow QWidget parent QMainW
  • 在 Core Data 中存储照片和视频?

    我正在开发一个应用程序 可以让用户录制视频和照片 现在我想知道存储它们的最佳方式是什么 第一个想法当然是将其保存在用户的照片库中 就像他从相机应用程序记录照片一样 并使用对文件的引用 现在存在的问题是用户可以从 照片 应用程序访问和删除文件
  • iOS 6 - UIWebView loadHTMLString 无法正常工作

    如果有人遇到以下问题 请告诉我您是否能够找到解决方案 我花了几天时间试图找到解决方案 但到目前为止还没有成功 我正在使用 XCode 4 5 和 iOS 6 SDK Golden Master 基本上 我的应用程序读取 HTML 文件并将其
  • 如何在 Angular2 中使禁用的反应表单可编辑

    我使用下面的代码创建一个表单并使其只读 我是角度新手 createForm this comapnyIdentificationForm this fb group businessName Validators required adre
  • 如何在 SVG 中获取多个内容的 ScrollBars

    我想要一个包含四个 SVG 内容的容器 SVG 现在 这四个 SVG 内容的内容超出了容器 SVG 中分配给它们的区域的内容 因此我要求滚动条自动出现 以便用户可以通过滚动看到完整的 svg 内容 我尝试通过添加属性宽度和高度来建立新视口
  • 从 vc++ 调用存储在堆中的代码

    想象一下我正在做这样的事情 void p malloc 1000 char p some opcode char p 1 another opcode for the sake of the example the opcodes are
  • 在 SWT-Widgets 上自动生成 ID

    有没有办法在 SWT Widgets 上自动生成 ID 以便 UI Tests 可以引用它们 我知道我可以使用 seData 手动设置 id 但我想以某种通用的方式为现有应用程序实现此功能 您可以使用以下命令为应用程序中的所有 shell