quinta-feira, 16 de fevereiro de 2012

Como usar MaskFormatter sem preencher toda a máscara ?

No sistema que estou desenvolvendo para a minha conclusão de graduação, estou usando Swing no NetBeans 7.0.1 e me deparei com uma situção bem chata no desenvolvimento do projeto. Havia uma tela com campos que precisava validar a entrada de dados, alguns campos só tinham que aceitar números, outros poderiam aceitar qualquer caracter e por ai vai. Comecei a pesquisar e percebi que muitas pessoas utilizavam o componente JFormattedTextField para esse tipo de trabalho, então comecei a fazer minhas experiências e no começo obtive sucesso mas, depois percebi que quando nao preenchia toda a máscara a informação que estava na caixa de texto sumia. Mais uma vez pesquisei sobre o assunto e encontrei a solução e vou compartilha-lá com vocês.

Nesse meu caso eu "setava" a máscara via minha codificação, assim tendo um trabalhão. Quando se trabalha com swing existem duas certezas, a primeira é: tem se conhecer bem OO e java e a segunda é: ter paciência pra escrever bastante código. Tendo essas duas certezas na cabeça, o segredo é saber utilizar bem os recursos que a ferramente provê e isso o NetBeans faz bem.

Para esse tipo de problema com máscara o NetBeans disponibiliza um editor com máscaras prontas(numérica, moeda, data, entre outros) e nos livram dessas dores de cabeça, para usar esse editor siga os seguintes passos:

clique com botão direito do mouse em cima do JFormattedTextField > Propriedades > formatterFactory > clique no botão de alteralção > o editor vai ser aberto.

Espero ter ajudado, fiz esse post em cima desse endereço

http://javafree.uol.com.br/topic-862647-Mascaras-no-NetBeans.html

Dêem sua opinião galera.
Leia Mais ››

quinta-feira, 9 de fevereiro de 2012

Mudando cores no iReport

Um certo dia, estava construindo um relatório no iReport (uso o 3.0.0) e tive que resolver o seguinte problema:
Tinha uma listagens de participantes de uma gincana e nessa listagem que constituía uma tabela, havia uma coluna com o título de "Vencedor". Nessa coluna era marcado quem era o vencedor da gincana. Quando o participante era vencedor a linha em que ele estava na tabela tinha de ficar verde, caso contrário continua na cor normal.

Para resolver esse problema, logo pensei que teria de criar uma regra para isso mas, o problema que enfrentava era que não sabia mudar a cor dinamicamente de text field em tempo de execução. Então, começei a pesquisar sobre o assunto e achei duas soluções que irei compartilhar.

A primeira solução é uma solução que funciona mas, não é a melhor de todas. Essa solução consiste em alterar a expressão de campo de texto. Para fazer isso é necessário seguir o seguinte caminho:

clicar com o botão direito no text field independente em que banda ele estiver > propriedades > Campo texto > Expressão de Campo de Texto.

Na área de "Expressão de Campo de Texto", você põe sua regra mudando a cor do campo, no meu caso fiz:
($f{flagVencedor.byteValue() == 0}) "" ? : ""

Logo após por sua regra, é necessário ir na aba "Todos", encontrar a propriedade "Texto estilizado" e marcar o checkbox. Pronto, vai funcionar. Essa regra avalia o field "flagVencedor", se esse field for igual a 0, não escreve nada pois 0 significa que o participante não é vencedor, caso contrário, escreve "Vencedor".

Essa primeira solução não é a melhor de todas pois, primeiramente, você quando faz isso não está utilizando uma solução da ferramenta, ou seja, em versões futuras do ireport é capaz de que o que você fez falhar se os report construidos migrarem. O que foi escrito na expressão de campo de texto é uma tag que faz parte do xml construído pelo ireport, fazendo desse jeito a mudança de cor você delega a responsabilidade de mudanças do XML para uma outra funcionalidade que tem somente responsabilidade de exibir valores.

A segunda solução é uma solução mais refinada, simples e com menos probabilidade de dar erros. A segunda solução consistem em criar um estilo pelo próprio iReport e associá-lo à seu text field. Para criar esse estilo é necessário seguir o seguinte caminho.

Vá no menu Formatar > Estilos > Janela será aberta, clique em "Novo".

Logo após clicar em "Novo", uma janela será aberta, com várias propriedades que podem ser mudadas. Um espaço no lado direito chamado "Condições do estilo" será mostrado. Por default, a condição "Padrão" já é mostrada. Essa condição constitui uma condição que qualquer elemento do ireport adota implicitamente. Então, qualquer propriedade mudada ali vai afetar qualquer elemento que esteja no seu report. Como não é isso que queremos, vamos adicionar uma nova condição de estilo, clique em "Adicionar". Quando clicado, o editor de expressões será aberto e sua regra pode ser posta. Após por sua regra, aplique-a.

Agora que temos a nova condição criada, clique nela e mude as propriedades desejadas e, depois clique em OK. Pronto, seu estilo foi criado com sucesso. Agora vá no seu textfield e, realize a seguinte ação.

Clique com botão direito > Propriedades > Aba Todos > Na propriedade estilo ponha o estilo que você criou.

Pronto, o estilo que você criou está sendo aplicado. Compile o report e, faça seu teste.

E ai o que achou desse lixo ? Sugestões ? Comentários ? Deixe sua opinião.
Leia Mais ››