在我们的Swing应用程序中,我们使用QA(Qf-Test)中的自动化测试工具,在命名swing组件时效果更好。 (调用Component.setName)。虽然他们的自动名称分配工作得相当好,但我们正在将SwingX组件引入项目中,这会导致该工具出现一些问题。
屏幕上有很多潜在的组件(典型的商业应用数据输入屏幕,但其中很多 - 应用程序处于ERP的复杂程度),有哪些选项可用于命名摇摆组件合理不引人注目的方式?
答案 0 :(得分:1)
我通常将字段存储在JPanel的属性中的JPanel中,如下所示:
private JLabel firstNameLabel; private JTextField firstNameTextField;
在实例化并布置这些组件的例程结束时,您可以运行使用java.lang.reflect
循环遍历面板的每个属性的例程。如果属性来自类Component
,则可以使用属性的名称在其上调用setName
。例如,它最终会调用:
this.firstNameLabel.setName("firstNameLabel"); this.firstNameTextField.setName("firstNameTextField");
...除了通过java.lang.reflect
您还可以让例程检查变量的颠簸案例名称,并将其替换为带空格的标准案例。这将使它们更具可读性。
这种方法将确保无论您添加到面板的哪些组件,它们都将获得友好的名称。
答案 1 :(得分:1)
我通常会为所有组件使用复合名称;名称建立在父名称(例如JDialog
)和字段名称(通过反射获得)之上。这使得组件名称在大多数情况下都是唯一的(根据您如何命名父母以及如何使用它们,您仍然可能会发生冲突,例如,如果您打开多个JInternalFrame
且所有名称都相同...)
我在Guts-GUI中实现了通用命名策略(就是这样)。
顺便说一下,组件命名不仅对UI测试很有意义,而且对于资源注入策略(组件的i18n)也很有用。
答案 2 :(得分:0)
您是如何构建界面的? JFormDesigner和大多数其他编辑器都允许自动设置组件的名称,这非常方便。大多数时候,我根本不需要考虑组件名称。只有例外是未使用JFormDesigner放置的组件。