JComboBox atualizar

7 respostas
edipokbelo

Bom galera eu tenho um JComboBox que é linkado com o banco
e quando eu removo 1 item desse ComboBox continua aparecendo na aplicação, então eu fecho e abro e o item some
no caso eu teria que dar um “refresh” na minha conexão com o bd?

7 Respostas

EugenioMonteiro

Vc remove o item através da sua aplicação?
Se vc tiver removendo diretamente do banco (ou por meio de outro programa), eu não conheço nenhum evento para esse tipo de situação.

Nicolas_Fernandes

Olá, Edipo!

Como o Eugenio disse: seja mais claro em sua explicação.

Você remove o item através da aplicação ou “na mão”?

[]'s

edipokbelo

através da aplicação.
Tem um JButton que serve para remover o item escolhido

Nicolas_Fernandes

Epido, você pode fazer assim.

Crie seu botão, e adicione um Listener nele.
Dentro deste Listener, você chama um método para excluir o item lá do DB.
E mande dar um refresh nos itens da ComboBox!

Algo assim:

private class MyButtonAction implements ActionListener {

   public void actionPerformed(ActionEvent e) {
   
      // Deletando da base de dados o item escolhido da ComboBox.
      myDAO.delete(myComboBox.getSelectedIndex());

     // Lendo os itens da base de dados, e jogando na ComboBox. (Não sei ao certo se é setListData, mas é algo assim!)
      myComboBox.setListData((Object []) myDAO.readByExample(""));
   }
}

Espero ter ajudado!

[]'s

edipokbelo

então Nicolas Fernandes, não tem esse método setListData no JComboBox

aqui está a minha função para deletar

public void pressionouExcluirTipoAnimal(Object tipoAnimal) {
		try {
			String url = "jdbc:odbc:Agenda";
			String usuario = "";	
			String senha = "";
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

			Connection con;
			con = DriverManager.getConnection(url,usuario,senha);
			
			Statement st = con.createStatement();
			st.executeUpdate("DELETE * FROM animais WHERE tipo LIKE '%"+tipoAnimal+"%'");
			JOptionPane.showMessageDialog(null,"DELETADO O DANADO");							
			st.close();
			
		}
	catch (Exception e) {
		JOptionPane.showMessageDialog(null,"Erro: "+e.getMessage());

	}
}
e aqui a ação no botão
btnDeletarTipoAnimal.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				pressionouExcluirTipoAnimal(cbBoxTipoAnimal.getSelectedItem());
			}
		});
Nicolas_Fernandes

Edipo,

Beleza… Dentro do evento aí de deletar, você deve acrescentar uma linha para ler todos os dados que você quer na ComboBox e setar nela!

Por exemplo:

btnDeletarTipoAnimal.addActionListener( new ActionListener() {  
            public void actionPerformed(ActionEvent evt) {
                
                pressionouExcluirTipoAnimal(cbBoxTipoAnimal.getSelectedItem());
                cbBoxTipoAnimal.setModel(new DefaultComboBoxModel((Object [])myDAO.lerDadosDoBancoDeDados()));
            }  
        });

Tenta assim!

[]'s

edipokbelo
então ainda não consegui fazer o "refresh" no meu ComboBox, tanto na hora de incluir 1 produto, quanto na hora de deletar.
Seguem os codigos:

esse faz a seleção no BD e depois eu o chamo no combobox
public void selecionarItem() {
		try {
			String url = "jdbc:odbc:Pizzaria";
			String usuario = "";	
			String senha = "";
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

			Connection con;
			con = DriverManager.getConnection(url,usuario,senha);
			Statement st = con.createStatement();
			ResultSet r = st.executeQuery("SELECT nm_Pizza,qt_Preco FROM tipoPizza");
			while ( r.next()){
				String tipo = r.getString("nm_Pizza");
				String preco = r.getString("qt_Preco");
			//	Double preco2 = Double.parseDouble(preco);
			//	preco2 = preco2/1;
				box.addItem(tipo);
			//	box.addItem(preco2);
			}
			st.close();
			con.close();
			
		}
	catch (Exception e) {
		JOptionPane.showMessageDialog(null,"Erro: "+e.getMessage());

	}

}
e esse aqui deletar um produto de acordo com o que esta selecionado na combo
public void excluirTipoPizza() {
		try {
			String url = "jdbc:odbc:Pizzaria";
			String usuario = "";	
			String senha = "";
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

			Connection con;
			con = DriverManager.getConnection(url,usuario,senha);
			PreparedStatement pst = con.prepareStatement("DELETE * FROM tipoPizza WHERE nm_Pizza LIKE ?");
			pst.setObject(1,"%" + box.getSelectedItem() +"%");
			pst.executeUpdate();
			JOptionPane.showMessageDialog(null,"PIZZA DELETADA");							
			pst.close();
			con.close();
			
		}
	catch (Exception e) {
		JOptionPane.showMessageDialog(null,"Erro: "+e.getMessage());

	}
}
Criado 17 de setembro de 2009
Ultima resposta 30 de out. de 2009
Respostas 7
Participantes 3