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!