Java 命名swing组件的策略

Java 命名swing组件的策略,java,swing,automated-tests,qf-test,Java,Swing,Automated Tests,Qf Test,在我们的Swing应用程序中,我们在QA(Qf测试)中使用了一个自动测试工具,当Swing组件被命名时,该工具工作得更好。(调用Component.setName)。虽然它们的自动名称分配工作得相当好,但我们正在将SwingX组件引入到项目中,这会导致该工具出现一些问题 屏幕上有很多潜在组件(您典型的业务应用程序数据输入屏幕,但其中很多-应用程序处于ERP的复杂性级别),有哪些选项可以以合理的不引人注目的方式命名swing组件?我通常将字段存储在JPanel上的属性中的JPanel中,如下所示:

在我们的Swing应用程序中,我们在QA(Qf测试)中使用了一个自动测试工具,当Swing组件被命名时,该工具工作得更好。(调用Component.setName)。虽然它们的自动名称分配工作得相当好,但我们正在将SwingX组件引入到项目中,这会导致该工具出现一些问题


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

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

private JLabel firstNameLabel; private JTextField firstNameTextField; …除了通过
java.lang.reflect

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


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

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

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

我在中实现了一个通用命名策略(就是这样)


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

这里的屏幕是手工编码的。对于应用程序的另一个组件,我们确实使用了IntelliJ的GUI builder,但它没有这样的功能。不过,这绝对是JFormDesigner的一个不错的特性。我已经想到了这种方法。我主要担心的是,这意味着重构字段名会破坏命名。我想在这种情况下可以使用注释(如果您想在重构字段名后强制名称保持不变)。当字段名更改时,您不希望QA程序中的名称也随之更改吗?我总是根据字段上的标签来命名字段名称,因此只有在标签发生任何变化时,字段名称才会发生变化。我不知道他们多久改变一次,但这会加强一致性。 this.firstNameLabel.setName("firstNameLabel"); this.firstNameTextField.setName("firstNameTextField");