1

在我们的 Swing 应用程序中,我们在 QA (Qf-Test) 中使用了一个自动化测试工具,当 Swing 组件被命名时它会更好地工作。(调用 Component.setName)。尽管它们的自动名称分配工作得相当好,但我们正在将 SwingX 组件引入项目中,这给该工具带来了一些问题。

屏幕上有很多潜在组件(您的典型业务应用程序数据输入屏幕,但其中很多 - 应用程序处于 ERP 的复杂级别),有哪些选项可以以合理不显眼的方式命名摆动组件?

4

3 回答 3

1

我通常将 JPanel 中的字段存储在 JPanel 上的属性中,如下所示:

私人 JLabel firstNameLabel;
私有 JTextField firstNameTextField;

在实例化和布置这些组件的例程结束时,您可以运行一个例程,用于java.lang.reflect循环遍历面板的每个属性。如果一个属性是类的后代Component,您可以使用该属性的名称来调用setName它。例如,它最终会调用:

this.firstNameLabel.setName("firstNameLabel");
this.firstNameTextField.setName("firstNameTextField");

...除了通过java.lang.reflect

您还可以让例程检查变量的颠簸大小写名称,并将其替换为带空格的标准大小写。这将使它们更具可读性。

这种方法将确保无论您向面板添加什么组件,它们都将获得友好的名称。

于 2010-09-02T15:40:00.200 回答
1

我通常为所有组件使用复合名称;该名称基于父名称(例如 a JDialog)和字段名称(通过反射获得)。这使得组件名称在大多数情况下都是唯一的(根据您命名父母的方式以及如何使用它们,您仍然可能存在冲突,例如,如果您打开多个JInternalFrame并且都具有相同的名称......)

我在Guts-GUI中实现了一个通用命名策略(就是这样做的) 。

顺便说一句,组件命名不仅对 UI 测试很有趣,而且对资源注入策略(i18n of components)也可能有用。

于 2010-09-03T05:08:28.077 回答
0

你是如何构建界面的?JFormDesigner 和可能大多数其他编辑器都允许自动设置组件的名称,这非常方便。大多数时候我根本不需要考虑组件名称。唯一的例外是未使用 JFormDesigner 放置的组件。

于 2010-09-02T17:23:57.693 回答