Setar Id do registro para alterar-lo no Swing

Boa Tarde,

Tenho o seguinte problema, to usando JDBC usando os padrões MVC e DAO e estou com duvida em meu método para alterar um registro
(postarei meu código com minha duvida abaixo para facilitar o entendimento)

JFrame

public class ControleFrame extends JFrame{
        private static final long serialVersionUID = -1566149126697914835L;
	
	private JLabel lbProduto, lbBobina, lbprodDia, lbmediaProdHr, lbprodMes,
				   lbLote, lbVolume, lbProdTurno, lbDataInicio, lbData1, lbData2, lbHora1, lbHora2, lbImageLogo;
	protected JTextField txtProduto, txtBobina, txtMinBobina, txtprodDia, txtmediaProdHr, txtprodMes,
			txtLote, txtVolume, txtProdTurno, txtImageLogo;
	private JTextField txtOperador, txtTurno;
	protected JButton btnRelatorios, btnBobina, btnEditarProd;
	
	//private List<RelProdutos> productList = new ControleController().listaProdutos();
	
	private ExecutorService exec;
	private Future<?> f;
	
	protected AtomicLong contador = new AtomicLong(0);
	protected AtomicLong contador2 = new AtomicLong(0);
	
	
	private static final DateFormat FORMATO_HORA = new SimpleDateFormat("HH:mm:ss");
	private static final DateFormat FORMATO_DATA = new SimpleDateFormat("dd/MM/yyyy");
	

	private Color corLetra = Color.black;
	private Color corBordatxt = Color.black;
	private Font fonteLbs = new Font("Calibri", Font.CENTER_BASELINE, 14);

// Aqui em diante vai o constructor e dentro seus componentes de Tela, acredito que não é nessessario postar..

//E aqui logo abaixo do Constructor começa os métodos da minha classe
//Método para salvar e alterar um registro
public void onClickSalvar(){
		ControleController cc = new ControleController();
		
		int txtLoteINT = Integer.parseInt(txtLote.getText());
		int txtVolumeINT = Integer.parseInt(txtLote.getText());
		int txtQuantidadeINT = Integer.parseInt(txtprodDia.getText());
		
		try {
			
			if(cc.verifyProduct(txtProduto.getText(), txtLoteINT)){
				cc.alterar(id/*<- ??*/, txtProduto.getText(), txtOperador.getText(), txtTurno.getText(), 
						txtLoteINT, txtVolumeINT, txtQuantidadeINT, lbData2.getText());
			}else{
				cc.salvar(txtProduto.getText(), txtOperador.getText(), txtTurno.getText(), 
						txtLoteINT, txtVolumeINT, txtQuantidadeINT, lbDataInicio.getText(), lbData2.getText());
				System.out.println("SALVO");
			}
			
		} catch (SQLException e) {
			System.out.println("Não foi possivel salvar, " + e.getLocalizedMessage());
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

É nesse método o meu problema, o salvar() funciona perfeitamente, mas reparem ali no alterar é ali o problema, meu método que vem da classe controller e antes disso da Dao
pede um parametro com o ID para saber qual registro é para ser alterado e eu realmente ‘não sei’ da onde vou setar esse Id no JFrame ali… gostaria de saber onde estou me equivocando …?!

Método na classe Controller

public void alterar(int id, String produto, String operador, String turno, int lote, int volume,
			int quantidade, String dataSaida)throws SQLException, ParseException{
		
		RelProdutos relProdutos = new RelProdutos();
		relProdutos.setId(id);
		relProdutos.setProduto(produto);
		relProdutos.setOperador(operador);
		relProdutos.setTurno(turno);
		relProdutos.setLote(lote);
		relProdutos.setVolume(volume);
		relProdutos.setQuantidade(quantidade);
		relProdutos.setDataSaida(formatarData(dataSaida));
		
		new RelProdutosDao().alterar(relProdutos);
		
	}

Método na Classe Dao

public void alterar(RelProdutos relProdutos) throws SQLException{
		String update = "UPDATE RELPRODUTOS " +
				"SET produto = ?, operador = ?, turno = ?, lote = ?, volume = ?," + 
				"quantidade = ?, dataEntrada = ?, dataSaida = ? WHERE id = ?";
		update(update, relProdutos.getId(), relProdutos.getProduto(), relProdutos.getOperador(),
				relProdutos.getTurno(), relProdutos.getLote(), relProdutos.getVolume(),
				relProdutos.getQuantidade(), relProdutos.getDataEntrada(), relProdutos.getDataSaida());
		
	}

Agradeço desde já amigos, Abraços!!

Fala ai blz, primeiro antes de atualizar você deveria buscar o objeto, de posse dele você manda atualizar.
Cria um método para buscar o objeto pelo id e depois altera o que você quer e chama o método atualizar.

Abraço

[quote=leocantanhede]Fala ai blz, primeiro antes de atualizar você deveria buscar o objeto, de posse dele você manda atualizar.
Cria um método para buscar o objeto pelo id e depois altera o que você quer e chama o método atualizar.

Abraço[/quote]

Ae leonardo, lembra de min nao?, Rodrigo wippel… la do curso da Teclógica, agente foi se esbarra bem aqui no forum kk

Enfim, ja tentei uma forma parecida da qual vc falou, vo da mais uma tentada aqui e qualquer coisa falo
vlw ai

Claro que lembro, outra forma seria mudar a assinatura do método alterar ao invés de receber um RelProduto receberia um id

public void alterar(int id) {

}

[quote=leocantanhede]Claro que lembro, outra forma seria mudar a assinatura do método alterar ao invés de receber um RelProduto receberia um id

[code]
public void alterar(int id) {

}
[/code][/quote]

Hum sim… To pensando em uma forma tipo alterar a cláusula where, ao invés de alterar pelo id, alterar diretamente pelas colunas…
ainda não fiz, to pensando ainda pois nunca atualizei um registro dessa forma que não fosse pelo id…

O leonardo, não sei se é sua especialidade, mas caso vc souber mto bem sobre swing, JTable, AbstractTableModel…
a hora que tu tive um tempinho da uma olhada nesse tópico aqui…
http://www.guj.com.br/java/286554-redimensionar-jscrollpane-dentro-do-jframe

vlw

[quote=leocantanhede]Claro que lembro, outra forma seria mudar a assinatura do método alterar ao invés de receber um RelProduto receberia um id

[code]
public void alterar(int id) {

}
[/code][/quote]

Funcionaria da mesma forma, eu buscaria o registro através do id, só que ai eu ia ficar com o mesmo problema… ia ter que setar o id la no Frame…

[quote=leocantanhede]Fala ai blz, primeiro antes de atualizar você deveria buscar o objeto, de posse dele você manda atualizar.
Cria um método para buscar o objeto pelo id e depois altera o que você quer e chama o método atualizar.

Abraço[/quote]

Se não fizer como o leocantanhede disse, como você vai saber que está alterando alguma coisa no banco? Você recupera antes os dados do banco para altera-los? Se recupera, você deve ter o id também.

[quote=romarcio][quote=leocantanhede]Fala ai blz, primeiro antes de atualizar você deveria buscar o objeto, de posse dele você manda atualizar.
Cria um método para buscar o objeto pelo id e depois altera o que você quer e chama o método atualizar.

Abraço[/quote]

Se não fizer como o leocantanhede disse, como você vai saber que está alterando alguma coisa no banco? Você recupera antes os dados do banco para altera-los? Se recupera, você deve ter o id também.[/quote]

Exatamente, achei o meu problema, na minha tela ControleFrame eu não ‘preciso’ fazer uma busca então obviamente não há da onde eu tirar o Id
então é claro que não iria saber oq é pra alterar, afinal java não faz milagre kk… viagem total

mas vlw ai, qualquer outra duvida posto aqui. Abraço