Estou tentando pegar o item escolhido no comboBox da ficha e jogar para banco de dados, mais só que está ocorrendo o erro citado acima. A variável tipo foi declarado como INT.
Se a variável TIPO foi declarada como “int” vai dar erro ao tentar inserir uma String nela: “getSelectedItem().toString()”. Não sei se vai resolver seu problema, mas tente falar a conversão de String para int, ou se o valor dentro do combobox for numérico, utilize apenas o “getSelectedItem()” e faça a conversão de objeto para int.
E
eumesmo.fs
Consegui resolver o problema para inserir no banco de dados foi só transformar para String mesmo.Só que estou com problema na hora de validar campo, eu uso esse código para validar os campos do formulário:
Aparece essa mensagem de erro:
bad operand types for binary operator “||”
first type: boolean
second type:int
E nesse caso?
ViniGodoy
O método getSelectedIndex() retorna um número. Para isso funcionar, tem que comparar esse número com alguma coisa… Por exemplo:
||(ComboBox.getSelectedIndex()==-1)){
E
eumesmo.fs
O || (ComboBox.getSelectedIndex() == 0)) { , funcionou perfeitamente,obrigado. Só que eu queria dar uma melhorada nessa código de validação,tipo para cada campo fazer um if depois de percorrer todos os ifs ele iria pro else, como faço isso sem que ele percorra o primeiro if e já pule pro else?
// fazendo a validação dos dadosif((jTextField1.getText().isEmpty())||(jTextField2.getText().contains("_"))||(jTextField3.getText().isEmpty())||(jTextField4.getText().isEmpty())||(jTextField5.getText().isEmpty())||(jTextField6.getText().isEmpty())||(jTextField7.getText().isEmpty())||(jTextField8.getText().isEmpty())||(ComboBox.getSelectedIndex()==0)){JOptionPane.showMessageDialog(null,"Existem campos inválidos.","Informação do Sistema",JOptionPane.WARNING_MESSAGE,newImageIcon(getClass().getResource("/imagens/info.png")));}else{aluno.setNome(jTextField1.getText());aluno.setCpf(jTextField2.getText());aluno.setDtnascimento(jTextField3.getText());aluno.setTelefone(jTextField4.getText());aluno.setEndereco(jTextField5.getText());aluno.setCep(jTextField6.getText());aluno.setEmail(jTextField7.getText());aluno.setDtmatricula(jTextField8.getText());aluno.setTipo(ComboBox.getSelectedItem().toString());;setResult(0);setVisible(false);JOptionPane.showMessageDialog(this,"Aluno "+jTextField1.getText()+" inserido com sucesso!","Informação do Sistema",JOptionPane.OK_OPTION,newImageIcon(getClass().getResource("/imagens/good.png")));}
ViniGodoy
Eu geralmente evito o else fazendo return. É uma técnica conhecida como code guard:
if((jTextField1.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Nome inválido!",
"Informação do Sistema", JOptionPane.WARNING_MESSAGE,
new ImageIcon(getClass().getResource("/imagens/info.png")));
jTextField1.requestFocusInWindow();
return;
}
if((jTextField2.getText().contains("_")) {
JOptionPane.showMessageDialog(this, "CPF inválido!",
"Informação do Sistema", JOptionPane.WARNING_MESSAGE,
new ImageIcon(getClass().getResource("/imagens/info.png")));
jTextField1.requestFocusInWindow();
return;
}
//Demais ifs aqui
//Agora você pode colocar sem else, pq se caiu num if, já saiu do método devido ao return.
aluno.setNome(jTextField1.getText());
aluno.setCpf(jTextField2.getText());
//Resto do método aqui
Cuidado: O primeiro parâmetro de um JOptionPane deve ser a janela que está abrindo o OptionPane. Geralmente vai ser this ou NomeDaJanela.this
Finalmente, dê nomes decentes para esses seus textFields. Seria melhor chama-los de txtNome, txtCPF e assim por diante...
E
eumesmo.fs
Obrigado. Usando Return fica bem mais prático. Em relação aos nomes campos dos realmente tenho que mudar .
E
eumesmo.fs
Obrigado. Usando Return fica bem mais prático. Em relação aos nomes campos dos realmente tenho que mudar .
E
eumesmo.fs
Estou usando uma JtabbedPane com duas Jpanel uma Dados e outra Endereço , no código de validação dos campos estou usando o requestFocusInWindow();, que caso o campo esteja inválido e eu aperte para inserir os dados o cursor vai para ele, mais se eu tiver no Panel Dados e o erro estiver no campo de Panel Endereço ou vice e versa o curso não vai. Teria como usar outro comando para que quando der a mensagem de erro mude do Panel Dados para o Panel Endereço ou vice e versa?
Trecho do código:
if ((txtTelefone.getText().contains("_"))) {
JOptionPane.showMessageDialog(this, "Telefone Inválido!",
"Informação do Sistema", JOptionPane.WARNING_MESSAGE,
new ImageIcon(getClass().getResource("/imagens/info.png")));
txtEndereco.requestFocusInWindow();
return;
}