tenho um problema de como fazer validação de textfields…
tenho 6 textfields e eles não podem aceitar vazio ou nome iguais…
e que ao apertar o botão OK não me deixe continuar se os textfields não estão válidos…
kara, o que vc precisa fazer eh simples, mas eu preciso de mais informação para te ajudar.
tente colocar algo como o que vc quer impedir que execute caso estejam vazios os textFields por exemplo.
entao a gente conversa.
L
lauronolasco
para saber se os textfields estao vazios… teste:
txtExemplo.getText().trim().lengh()>0
getText() -> recupera o conteúdo digitado
trim() -> retira espaços em branco no inicio e no fim
.lenght() -> retorna um inteiro com o tamanho final da String
Emersonsts
Tenta isso:
Para validação != de vazio
if(txtExemplo.getText().equals("")){
JOptionPane.showMessageDialog(null,"Campo tal nao pode ser vazio!");
}
Para um nao ser igual a outro tenta:
if(!txtExemplo.getText().equals("")){
if(txtExemplo.getText().equals(txtExemplo2.getText())){
OptionPane.showMessageDialog(null,"Campo 1 igual ao campo 2");}
}
Eu nunca testei com o trim() mas pode tentar né…
Espero ter ajudado… No meu aqui funcionou…
t+
andretco
ok…entendi como se faz para não aceitar vazios e que 2 textos não sejam iguais…valeu!!
mas como faço isso para os 6 textos?
tentei fazer mas me enrolei todo como os if e os operadores lógicos && e ||…
não consigo fazer que ao momento de encontrar varios iguais ou vazios …me mande só uma mensagem de igual ou só uma mensagem de vazio…
fiz isto mas não dá certo…e não sei aonde colocar os avisos…
PS.:Cuidado pra não confundir: Ele retorna true se não forem iguais…
PS.:Pode Testar quantas strings quizer …
Acho que é isso…
Flws
Emersonsts
Entao cara…
Realmente seu código esta meio confuso mesmo…
Vc esta trabalhando só com textFields ou com comboBox tbm?
Vou fazer uma telinha e por validações nela dai te mando a classe aqui mais tarde para vc ver…
andretco
desde já agradeço suas importantes ajudas pessoal…
só pra clarificar um pouco mais…este é um exemplo do eu penso fazer:
eu consigo deixar o textfield correspondente ao checkbox não editavel…usando textField.setEditable(true) quando dou um click no chekbox…isso não é problema…
o problema são as validações e que ao momento de apertar o botão OK apareçam as 2 mensagens de advertência, seja de espaços vazios ou nomes iguais…ou seja, se tem erros não me deixe continuar…
não sei se é uma boa idéia fazer assim ou de outra maneira…pelo menos é única que tive…estou pensando em outras…
valeu!
Emersonsts
Acho q isso vai resolver seu problema…
importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JTextField;publicclassValidacaoextendsJFrameimplementsActionListener{privateJPanelpainelCampos,painelBotoes;privateJLabellbNome1,lbNome2,lbNome3,lbAviso2,lbAviso;privateJTextFieldedNome1,edNome2,edNome3;privateJButtonbtLimpar,btValidar;publicValidacao(){super("Teste de Validação");this.criarCampos();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// this.setSize(new Dimension(500,200));this.pack();this.setLocationRelativeTo(null);this.setVisible(true);}publicvoidcriarCampos(){this.painelCampos=newJPanel();this.painelCampos.setLayout(newGridLayout(4,2,5,5));this.lbNome1=newJLabel(" Nome 1 : ");this.edNome1=newJTextField();this.painelCampos.add(lbNome1);this.painelCampos.add(this.edNome1);this.lbNome2=newJLabel(" Nome 2 : ");this.edNome2=newJTextField();this.painelCampos.add(lbNome2);this.painelCampos.add(this.edNome2);this.lbNome3=newJLabel(" Nome 3 : ");this.edNome3=newJTextField();this.painelCampos.add(lbNome3);this.painelCampos.add(this.edNome3);this.lbAviso2=newJLabel(" Os nomes nao devem se repetir!");this.lbAviso2.setForeground(Color.RED);this.lbAviso2.setVisible(false);this.painelCampos.add(lbAviso2);this.lbAviso=newJLabel("Todos os campos devem ser preenchidos!");this.lbAviso.setForeground(Color.RED);this.lbAviso.setVisible(false);this.painelCampos.add(lbAviso);this.getContentPane().add(painelCampos,BorderLayout.CENTER);this.painelBotoes=newJPanel();this.painelBotoes.setLayout(newFlowLayout());this.btLimpar=newJButton("Limpar");this.btLimpar.addActionListener(this);this.painelBotoes.add(btLimpar);this.btValidar=newJButton("Validar");this.btValidar.addActionListener(this);this.painelBotoes.add(btValidar);this.getContentPane().add(painelBotoes,BorderLayout.SOUTH);}publicvoidlimparDados(){this.edNome1.setText("");this.edNome2.setText("");this.edNome3.setText("");this.edNome1.setForeground(Color.BLACK);this.edNome2.setForeground(Color.BLACK);this.edNome3.setForeground(Color.BLACK);this.lbAviso.setVisible(false);this.lbAviso2.setVisible(false);}// Deve ter um jeito de fazer isso com menos linhas mas eu faria assimpublicbooleanvalidar(){if(this.edNome1.getText().equals("")||this.edNome2.getText().equals("")||this.edNome3.getText().equals("")){this.lbAviso.setVisible(true);returnfalse;}elseif(!(this.edNome1.getText().equals("")&&this.edNome2.getText().equals("")&&this.edNome3.getText().equals(""))){if(this.edNome1.getText().equals(this.edNome2.getText())){this.edNome1.setForeground(Color.RED);this.edNome2.setForeground(Color.RED);this.edNome3.setForeground(Color.BLACK);this.lbAviso2.setVisible(true);returnfalse;}elseif(this.edNome1.getText().equals(this.edNome3.getText())){this.edNome1.setForeground(Color.RED);this.edNome2.setForeground(Color.BLACK);this.edNome3.setForeground(Color.RED);this.lbAviso2.setVisible(true);returnfalse;}elseif(this.edNome2.getText().equals(this.edNome3.getText())){this.edNome1.setForeground(Color.BLACK);this.edNome2.setForeground(Color.RED);this.edNome3.setForeground(Color.RED);this.lbAviso2.setVisible(true);returnfalse;}}returntrue;}publicstaticvoidmain(String[]args){newValidacao();}publicvoidactionPerformed(ActionEvente){if(e.getSource()==btLimpar){this.limparDados();}if(e.getSource()==btValidar){if(validar()){JOptionPane.showMessageDialog(null,"Validado com sucesso!");this.limparDados();}}}}
Eu coloquei umas frescurinhas de cor para se forem iguais mas nao é necessario se nao quiser…
A
andrericarte
No site abaixo existe uma API que vc pode utilizar “validators” no seu JTextField…
Bem interessante testei achei legal mas naum “fucei” muito nele naum