Ícone e uppercase padrão em janelas java?

Tenho uma dúvida:

Como fazer para configurar o uppercase em campos de texto e ícone padrão em uma janela no swing de forma que todas as outras acompanhem essa configuração?
Tenho um jframe que é a tela de login, um jframe que é a tela principal e o restante das janelas são Jdialog.

Para os campos de texto existem diversos tipos métodos que podem ser utilizados para isso, tanto uppercase como também limitar quantidade e tipos de caracteres que podem ser imputados nos campos!
Para o ícone você pode criar uma classe abstrata que contenha essa configuração do ícone, e estender esta classe nos seus frames.

1 curtida

Obrigado pelo comentário Jonathan, mas o que quero é fazer a configuração em apenas uma classe e não precisar fazer nas demais, tanto no ícone como nos campos de texto.

Concordo com o Jonathan, faça uma classe, configure ela e estenda dela suas janelas. Assim será feito só em uma. Não há forma de “configurar o swing” com propriedades padrão. Segue exemplo:

public class MeuFrame extends JFrame {

    public MeuFrame (String tit) {
        setTitle(tit);
        setIconImage(new ImageIcon("...").getImage());
    }

    @Override
    public void setTitle(String title) {
        super.setTitle(title.toUpperCase());
    }

    @Override
    public String getTitle() {
        return super.getTitle().toUpperCase();
    }
}

Depois é só estender seus frames desta classe.

1 curtida

Sim, a ideia é exatamente esta!
O que eu quis dizer na resposta anterior é que você deve criar as classes com seus métodos para satisfazer o problema, você vai encontrar N exemplos pra utilizar, depois é só fazer a chamada das classes abstratas onde quiser utilizá-las, pois eu desconheço algum tipo de configuração global que possa ser feita.

1 curtida

@Rodrigo_Void
@Jonathan_Medeiros
Entendi, obrigado pelo exemplo.
Agora, sobre os txtFields, para configurar todos para uppercase, teria que fazer um if aninhado com um for para verificar o componente?
No final da montagem da tela, eu insiro esse método?
No caso teria que inserir em todas as janelas?

Eu diria que deveria fazer a mesma coisa. Criar uma classe pros TextFields e estender.

*Obs: Fica horrível um sistema com todas escritas em maiúsculo. Fica tudo gritado.

1 curtida

Não sabia que podia criar uma classe para os textFields.
Vou pesquisar a respeito, acho que isso resolve o meu problema.

Obrigado a vocês!

Esse é um pequeno exemplo que limita a quantidade de caracteres em um campo e converte o conteúdo digitado para maiúsculo.

public class LetraMaiuscula extends PlainDocument {
     private int iMaxLength;
    public LetraMaiuscula(int maxlen) {
         super();
         iMaxLength = maxlen;
     }
    @Override
     public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {

        if (str == null) {
             return;
         }
         if (iMaxLength <= 0)        // aceitara qualquer no. de caracteres
         {
             super.insertString(offset, str, attr);
             return;
         }
         int ilen = (getLength() + str.length());
         if (ilen <= iMaxLength)    // se o comprimento final for menor...
             super.insertString(offset, str.toUpperCase(), attr);   // ...aceita str e passa ela para UpperCase
     }
}
1 curtida

Este é um exemplo de classe para substituição dos ícones dos jFrames, da mesma forma que funciona aqui você criar uma para as jDialogs que for utilizar e estende-las conforme precisar.

public abstract class TelaGenerica extends JFrame {
        
    public TelaGenerica() {
        URL url = this.getClass().getClassLoader().getResource("icones/logosystem.png");// aqui você passa o caminho da imagem salva no resource do seu projeto
        Image imagem = Toolkit.getDefaultToolkit().getImage(url);
        this.setIconImage(imagem);//seta o ícone no frame
        this.removeNotify();
        this.setResizable(false);//bloqueia a opção de maximizar o frame

    }

}
1 curtida

Obrigado pela atenção caro Jonathan!