Question

Dans notre application Swing, nous utilisons un outil de test automatisé QA (QF-Test) qui fonctionne mieux lorsque les composants Swing sont nommés. (Appelant Component.setName). Bien que leurs affectations de nom automatique fonctionnent raisonnablement bien, nous introduisons des composants SwingX dans le projet et qui est à l'origine des problèmes de l'outil.

Il y a beaucoup de composants potentiels sur un écran (vos écrans de saisie de données typiques d'applications d'affaires, mais beaucoup d'entre eux - l'application est au niveau de la complexité d'un ERP), quelles options sont là pour nommer des composants Swing dans un raisonnablement de manière discrète?

Était-ce utile?

La solution

J'entreposent les champs dans un JPanel dans les propriétés du JPanel, comme ceci:

private JLabel firstNameLabel;
private JTextField firstNameTextField;

A la fin de la routine qui instancie et expose ces composants, vous pouvez exécuter une routine qui java.lang.reflect utilisations en boucle à travers chaque propriété du panneau. Si une propriété descend de la Component de classe, vous pouvez appeler setName dessus avec le nom de la propriété. Ainsi, par exemple, il finirait par appeler:

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

... que par java.lang.reflect

Vous pouvez également avoir la routine d'examiner les noms de cas cahoteuses des variables et le remplacer par cas standard avec des espaces. Cela les rendre plus lisibles.

Cette approche garantira que peu importe ce que les composants que vous ajoutez à un panneau, ils auront tous des noms conviviaux.

Autres conseils

J'utilise généralement un nom composé pour tous mes composants; le nom est construit sur le nom de parent (par exemple un JDialog) et le nom de domaine (obtenue par réflexion). Cela fait les noms de composants uniques dans la plupart des cas (vous pouvez toujours avoir des conflits selon la façon dont vous nommez les parents et comment vous les utiliser, par exemple si vous ouvrez plusieurs JInternalFrame et tous ont le même nom ...)

Je l'ai mis en œuvre une stratégie de nommage générique (qui fait exactement cela) Guts-GUI .

Par ailleurs, le nommage composant est non seulement intéressante pour les tests interface utilisateur, mais il peut aussi être utile pour les stratégies d'injection de ressources (i18n des composants).

Comment construisez-vous l'interface? JFormDesigner et probablement la plupart des autres éditeurs permettent de définir le nom du composant automatiquement, ce qui est très pratique. La plupart du temps, je ne dois pas penser aux noms des composants du tout. Seules exceptions sont des éléments qui ne sont pas placés avec JFormDesigner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top