Pergunta

Em nosso Balanço aplicativo, nós estamos usando uma ferramenta de teste automatizado para controle de qualidade (Qf-Teste) que funciona melhor quando o swing componentes são nomeados.(Componente de chamada.setName).Apesar de seu nome automático atribuições de trabalho razoavelmente bem, nós estamos apresentando SwingX componentes para o projeto e que está a causar alguns problemas para a ferramenta.

Há um grande potencial de componentes em uma tela (o típico aplicativo de negócios ecrãs de entrada de dados, mas um monte deles - o aplicativo é o nível de complexidade de um ERP), que opções existem para a nomeação de swing componentes em um razoavelmente maneira discreta?

Foi útil?

Solução

Eu normalmente armazenam os campos em um JPanel em propriedades no JPanel, como este:

private JLabel firstNameLabel;
private JTextField firstNameTextField;

No final da rotina que cria e estabelece a esses componentes, você pode executar uma rotina que utiliza java.lang.reflect para fazer um loop através de cada propriedade do painel.Se uma propriedade descende da classe Component, você pode chamar setName sobre ele com o nome da propriedade.Assim, por exemplo, seria acabam chamando:

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

...exceto por meio de java.lang.reflect

Você também pode ter a rotina de examinar o acidentado caso, nomes de variáveis e substituí-lo com o padrão de caso com espaços.Isso poderia torná-los mais legíveis.

Esta abordagem irá garantir que não importa o que componentes você adicionar ao painel, eles ficarão com nomes amigáveis.

Outras dicas

Eu geralmente uso um nome composto para todos os meus componentes; O nome é construído sobre o nome pai (por exemplo, JDialog) e o nome do campo (obtido por reflexão). Isso torna os nomes de componentes únicos na maioria dos casos (você ainda pode ter conflitos, dependendo de como nomear os pais e como os usa, por exemplo, se você abrir vários JInternalFrame E todos têm o mesmo nome ...)

Eu implementei uma estratégia de nomeação genérica (isso faz exatamente isso) em Guts-gui.

A propósito, a nomeação de componentes não é apenas interessante para testes de interface do usuário, mas também pode ser útil para estratégias de injeção de recursos (i18n de componentes).

Como você está construindo a interface? JFormDesigner e provavelmente a maioria dos outros editores permitem definir o nome do componente automaticamente, o que é muito útil. Na maioria das vezes, não preciso pensar nos nomes dos componentes. Somente exceções são componentes que não são colocados com jformDesigner.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top