Códigos duplicados, como evitar?

5 respostas
dooda

Buenas pessoALL
Olhando meu códigos, percebi que não estou ficando muito legíveis quando…

Estou desenvolvendo ums GUI para “brincar” com swing, e me deparei várias vezes duplicando códigos para setar uma fonte de um jtextfield ou criando um cursor ou uma determinada cor em rgb, ou uma borda padrão po exemplo…

Qual a melhor prática pra isso, para que se possa ainda re-utilizar estes “padrões” mais tarde?

É uma boa prática criar uma classe de constantes para mensagens do sistema tipo “Atenção, bla bla bla…”?

Vallew…
Obrigado!!

5 Respostas

E

Se você está fazendo as coisas “no braço” ou então usando o NetBeans (que tem suporte para desenhar telas com seus próprios componentes, não somente os do pacote javax.swing.* ) você pode derivar uma classe a partir de JTextField, por exemplo, e efetuar a configuração-padrão nela. Exemplo (é claro que não testei isto, e a classe é horrivelmente incompleta - não sei se estou esquecendo um parâmetro. Aqui estou criando um JTextField customizado com a borda vermelha.

public class MeuTextField extends JTextField {
    public MeuTextField() { super(); customize(); }
    private void customize() {
        setBorder (BorderFactory.createLineBorder (Color.RED));
    }
}

No caso específico do NetBeans, você até pode instalar essa classe na Palette de componentes e arrastá-la para a sua tela. (Não esqueça de definir sempre o construtor sem parâmetros, tal como feito acima, para que o NetBeans possa usar a classe a partir da palette).

L

É interessante vc criar uma classe de “utilidades”, que pode, por exemplo, fornecer métodos para centralizar uma janela na tela, exibir mensagens do sistema e outras coisas que poderão ser reutilizadas em vários locais no código.

dooda

Muito bem Edson…

Eu estou fazendo no braço, usando o eclipse pra aprender mesmo…
Pensei em criar meus próprios JTextField, mas achei que era um serviço desnecessário, mas agora vejo que sejá muito util, enfim posso definir quantos construtores quizer…

Sobre a classe de utilidades ifpolli, achei interessante também, mas é mesmo uma boa prática? eu criei um metódo centralize(); dentro do meu FrameModelo, então seria interessante passa-lo pra utilidades?

agradeço as sugestões…
Obrigado.

L

Gostaria de corrigir meu post anterior:

Dooda, realmente, é uma melhor prática definir um frame modelo que implemente métodos de “utilidades” e então os demais frames que precisam ter essas mesmas funcionalidades herdem desse modelo. Após rever o que havia falado anteriormente percebi que não é uma boa prática criar uma classe com métodos estáticos para fornecer funcionalidades, devido a termos o mecanismo de heranca.

ViniGodoy

Eu acho melhor criar um filho de JTextField só se vc for adicionar uma funcionalidade inteiramente nova, como por exemplo, o recurso de auto-completar.

Caso contrário, crie uma classe de fábrica:

JTextField fieldComBordas = new TextFieldFactory().createDefaultBorderedTextField();

Depois você define sua classe de fábrica em algum lugar:

public class TextFieldFactory { public JTextField createDefaultBorderedTextField() { JTextField field = new JTextField(); field.setBorder(BorderFactory.createLineBorder (Color.RED)); return field; } }

Criado 6 de julho de 2007
Ultima resposta 16 de ago. de 2007
Respostas 5
Participantes 4