[RESOLVIDO] Como limpar o campos?

Tenho uma tela onde consulto dados do curso de uma tabela do Banco de dados e na tela tenho um comboBox que o usuário seleciona qual curso ele quer consultar e na ação dele clicar no item do comboBox aparece os dados do curso, isso está funcionando, mas quando ele selecionar o item null do comboBox os dados tem que ser limpos, mas não tá limpando. Segue o código do comboBox.

if(cbCurso.getSelectedItem()!=null) {
	String selecao = (String) (cbCurso.getSelectedItem());
	tfNome.setText(selecao);
					
	ResultSet res1 = inserir.executarBusca("select CursoSigla from curso where CursoNome = '"+selecao+"'");
					
	ResultSet res2 = inserir.executarBusca("select CursoNivel from curso where CursoNome = '"+selecao+"'");
					
	ResultSet res3 = inserir.executarBusca("select CursoTurno from curso where CursoNome = '"+selecao+"'");
					
	try {
						
		while(res1.next()) {
			tfSigla.setText(res1.getString("CursoSigla"));
		}
						
		while(res2.next()) {
							
			curso.setNivel(res2.getString("CursoNivel"));
							
			if (res2.getString("CursoNivel").charAt(0) == 'S') {
				tfNivel.setText("Subsequente");
			}else if (res2.getString("CursoNivel").charAt(0) == 'G') {
				tfNivel.setText("Graduação");
			}
							
		}
						
		while(res3.next()) {
			if(res3.getString("CursoTurno").charAt(0)=='M'){
				tfTurno.setText("Manhã");
			}else if(res3.getString("CursoTurno").charAt(0)=='T') {
				tfTurno.setText("Tarde");
			}else if(res3.getString("CursoTurno").charAt(0)=='N') {
				tfTurno.setText("Noite");
			}
		}
						
	} catch (Exception e1) {
		e1.printStackTrace();
	}finally {
		if(cbCurso.getSelectedItem()==null) {
			tfNome.setText(null);
			tfSigla.setText(null);
			tfNivel.setText(null);
			tfTurno.setText(null);
		}
	}
}

OBS: O unico componente que está sendo limpo é o tfNome, e como ele é o unico que não recebe do ResultSet então deduzi que o problema é limpar ele.
Estou usando o eclipse e o postgreSQL

Vc ta fazendo a lógica errada mano, e não precisa “limpar” o resultset.

if (...){
   .....
}
}finally {
		if(cbCurso.getSelectedItem()==null) {
			tfNome.setText(null);
			tfSigla.setText(null);
			tfNivel.setText(null);
			tfTurno.setText(null);
		}
	}

Faz assim:

if(cbCurso.getSelectedItem()!=null) {
   //mostra os dados
} else {
   //limpa os campos
}

@rodriguesabner Fiz desse jeito também, mas não limpa :frowning:

@rodriguesabner Ainda continua “Limpando” só o tfNome, os outros não

Onde vc ta colocando esse código? Fez um ItemStateChanged na sua combo?

Troca o “null”, por “”

        tfNome.setText("");
        tfSigla.setText("");
        tfNivel.setText("");
        tfTurno.setText("");

@rodriguesabner Testei com “” e não funciona. Esse código eu coloquei no actionPerformed, esse ItemStateChanged não fiz não, como ele funciona?

No final da tela tenho um botão “Deletar” que deleta os dados consultados e apos deletar ele limpa os componentes e nisso tá funcionando, quando deleta ele executa os .setText(null);
Tá assim o código:

JButton btnDeletar = new JButton("Deletar");
btnDeletar.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		curso.setSigla(tfSigla.getText());
				
		try {
			inserir.dadosDelete(curso);
		} catch (Exception e2) {
			e2.printStackTrace();
		}
			tfNome.setText(null);
			tfSigla.setText(null);
			tfNivel.setText(null);
			tfTurno.setText(null);
			JOptionPane.showMessageDialog(null, "Remoção realizada com sucesso.");
	}
});

Faz o seguinte, apaga esse actionPerformed e coloca esse código abaixo, cada seleção q vc fizer na sua combo, tem que apagar os campos.

É um event que lê as alterações feitas na combo, quando o item for alterado o evento é acionado.

combo.addItemListener(new java.awt.event.ItemListener() {
    public void itemStateChanged(java.awt.event.ItemEvent evt) {
        tfNome.setText(null);
	tfSigla.setText(null);
        tfNivel.setText(null);
	tfTurno.setText(null);
    }
});
1 curtida

@rodriguesabner Aee funcionou, valeu mesmo cara, ajudou muito!!

1 curtida