Стратегия именования компонентов свинга - PullRequest
1 голос
/ 02 сентября 2010

В нашем приложении Swing мы используем инструмент автоматического тестирования в QA (Qf-Test), который работает лучше, когда именуются компоненты Swing. (вызывая Component.setName). Хотя их автоматическое назначение имен работает достаточно хорошо, мы внедряем компоненты SwingX в проект, и это вызывает некоторые проблемы для инструмента.

На экране много потенциальных компонентов (типичные экраны ввода данных вашего бизнес-приложения, но их много - приложение находится на уровне сложности ERP), какие есть варианты для именования компонентов свинга в разумно ненавязчивым образом?

Ответы [ 3 ]

1 голос
/ 03 сентября 2010

Я обычно использую составное имя для всех своих компонентов; имя построено на родительском имени (например, JDialog) и имени поля (полученном с помощью отражения). Это делает имена компонентов уникальными в большинстве случаев (у вас все еще могут быть конфликты в зависимости от того, как вы называете родителей и как вы их используете, например, если вы открываете несколько JInternalFrame и у всех одинаковое имя ...)

Я реализовал общую стратегию именования (которая именно это и делает) в Guts-GUI .

Кстати, именование компонентов не только интересно для тестирования пользовательского интерфейса, но также может быть полезно для стратегий внедрения ресурсов (i18n компонентов).

1 голос
/ 02 сентября 2010

Я обычно храню поля в JPanel в свойствах на JPanel, например:

private JLabel firstNameLabel;
private JTextField firstNameTextField;

В конце процедуры, которая создает и размещает эти компоненты, вы можете запустить процедуру, которая использует java.lang.reflect для циклического прохождения каждого свойства панели. Если свойство происходит от класса Component, вы можете вызвать setName для него с именем свойства. Так, например, это в конечном итоге вызовет:

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

... кроме как через java.lang.reflect

Вы также можете попросить подпрограмму проверить имена переменных в ухабистом регистре и заменить их стандартным регистром с пробелами. Это сделает их более читабельными.

Этот подход гарантирует, что независимо от того, какие компоненты вы добавите на панель, все они получат понятные имена.

0 голосов
/ 02 сентября 2010

Как вы строите интерфейс?JFormDesigner и, вероятно, большинство других редакторов позволяют автоматически устанавливать имя компонента, что очень удобно.Большую часть времени мне вообще не нужно думать о названиях компонентов.Единственными исключениями являются компоненты, которые не помещаются в JFormDesigner.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...