Eu estou desenvolvendo um sistema e quero fazer com que alguns campos com texto pré digitados funcionem como um placeholder eu consegui fazer diretamente no View do projeto assim:
privatevoidtxtNumeroLogClienteFocusGained(java.awt.event.FocusEventevt){
if(txtNumeroLogCliente.getText().equals("Insira o número.....")){
txtNumeroLogCliente.setText("");}
}
privatevoidtxtNumeroLogClienteFocusLost(java.awt.event.FocusEventevt){
if(txtNumeroLogCliente.getText().equals("")){
txtNumeroLogCliente.setText("Insira o número.....");}
}
O problema é que eu quero fazer isso a partir do controller, porém eu vários campos que recebem texto pré definido e eu queria uma função só que funcionasse para todos. E com isso eu quero perguntar se existe em Java alguma forma de fazer a mesma coisa mas sem definir de onde exatamente pegar?
Eu pensei em algo do tipo: Verificar se o elemento que chamou a função tem texto, se sim vazio.
Não pode utilizar um recurso para outro como e fazer isso funcionar. Não dá para fazer isso ou eu não entendi a sua realidade.
Placeholder é uma coisa e
Texto Padrão (pre digitados) é outra coisa,
se existir o texto padrão automaticamente não mostra o Placeholder e é assim que é para funcionar (vice versa)
D
DavyMeireles
Por exemplo o campo quando o programa inicia já vem com um texto digitado tipo:
Insira Seu Nome.
Ai quando o usuário clica o texto some pra ele poder digitar o nome, ou a informação que precisar.
O que eu quero é criar uma função dessa pra retirar o texto sem ser no meu view porque quero deixar o máximo possível no padrão MVC.
por isso eu quero no controller criar uma função chamada “Limpa texto” ou algo assim pra quando o usuário seleciona o Jtextfield em questão o programa setar Vazio nele. Mas como tenho vários campos assim quero saber se existe um jeito de fazer uma função unica para todos, pois a forma que eu sei que daria certo teria que fazer varias funções.
Acho que agora esta melhor explicado
Dragoon
O Placeholder faz isso amigo não precisa programar!
é Java Web?
rodriguesabner
Eu acredito que no Java SE não tem o placeholder.
Dá uma olhada aqui:
D
DavyMeireles
Não é java de computador mesmo
D
DavyMeireles
Então eu busquei por dias e não achei nada por isso que eu criei essa função que eu quero jogar no controller agora
rodriguesabner
Java SE, é Java Desktop, como vc disse Java de Computador.
Vc viu o site que eu mandei? Fala sobre o assunto.
Outra coisa que vc pode fazer é colocar um texto no campo, e na hora que o campo ganhar foco, vc limpa o texto. Isso é um PlaceHolder
D
DavyMeireles
vi sim porém o código de lá é muito grande eu vou fazer isso do foco mesmo
Lucas_Camara3 likes
importjava.awt.Font;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.RenderingHints;importjavax.swing.JOptionPane;importjavax.swing.JTextField;importjavax.swing.text.Document;publicclassPlaceholderTextFieldextendsJTextField{privatestaticfinallongserialVersionUID=1L;publicstaticvoidmain(finalString[]args){finalPlaceholderTextFieldtf=newPlaceholderTextField("");tf.setColumns(20);tf.setPlaceholder("All your base are belong to us!");finalFontf=tf.getFont();tf.setFont(newFont(f.getName(),f.getStyle(),30));JOptionPane.showMessageDialog(null,tf);}privateStringplaceholder;publicPlaceholderTextField(){}publicPlaceholderTextField(finalDocumentpDoc,finalStringpText,finalintpColumns){super(pDoc,pText,pColumns);}publicPlaceholderTextField(finalintpColumns){super(pColumns);}publicPlaceholderTextField(finalStringpText){super(pText);}publicPlaceholderTextField(finalStringpText,finalintpColumns){super(pText,pColumns);}publicStringgetPlaceholder(){returnplaceholder;}@OverrideprotectedvoidpaintComponent(finalGraphicspG){super.paintComponent(pG);if(placeholder==null||placeholder.length()==0||getText().length()>0){return;}finalGraphics2Dg=(Graphics2D)pG;g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);g.setColor(getDisabledTextColor());g.drawString(placeholder,getInsets().left,pG.getFontMetrics().getMaxAscent()+getInsets().top);}publicvoidsetPlaceholder(finalStrings){placeholder=s;}}
Usando
PlaceholderTextFieldtxtLogin=newPlaceholderTextField();txtLogin.setPlaceholder("login do usuário");