0

我正在使用 Justinmind 的 API 来开发插件。我需要的基本上是通过 ID 找到一个元素。但是,API 似乎没有像findById()这样的方法,因为我在这里搜索了整个文档 。我假设我必须创建一个方法。在这里,我将解释 Justinmind 中的问题和一般结构的详细信息,尽管该问题并非特定于 Justinmind

假设我有以下页面布局:

在此处输入图像描述

我会在 Justinmind 中设计此页面,如下所示:

Screen
----Image
----Group
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
----Text
----Text
----Text

在 Justinmind API 中,屏幕是一个ICanvas对象。我将屏幕存储在myScreen变量中。然后,getApiRoot()返回页面的最顶层组件。之后,每个组件都是一个子组件,可以通过getApiChildren()方法访问。

List<IComponent> components = myScreen.getApiRoot().getApiChildren();

上面的代码返回Image、Group和Texts,即一阶层次组件。例如,我可以访问第一个按钮的标签(OVERVIEW),如下所示:

IComponent group = components.get(1); //Returns the Group
IComponent button1 = group.getApiChildren().get(0); //Returns the first button group, which is the first child of group
IComponent label1 = button1.getApiChildren().get(1); //Returns the label, which is the second child of the first button group

如您所见,我总是通过getApiChildren()方法访问组件。这在大型动态页面中不太可行。例如,因为我正在编写的插件会在按钮组中缺少 a 标签时发出警报。为了检查标签的存在,我必须使用getApiChildren()方法遍历屏幕的所有组件。

我可以通过树来表示它:

在此处输入图像描述

但是,这种结构总是会改变。我应该构建树还是哈希图?在非常复杂的对象中找到对象的最佳方法是什么?

4

1 回答 1

1

我不知道。但是,如果您在 java 中有一个复杂对象的图表,您可以尝试这个库http://commons.apache.org/proper/commons-jxpath/并使用 XPATH 语法来指定您的查询。

于 2016-06-17T09:24:42.090 回答