Olá!
Bem, pessoal, meus problemas são os seguintes:
[RESOLVIDO] - Apenas usando o repaint() após as alterações. Mas ainda não sei o motivo (interno) desse comportamento. 1º Eu tenho um objeto com um atributo valor (BigDecimal) e tenho uma tela onde posso alterar esse objeto. Quando eu altero e consulto (clico na JTable e os dados são preenchidos nos jTextFields) o JMoneyField que uso come o último digito, apesar do valor ter sido alterado corretamente. Aí eu tenho que abrir a tela novamente e aí sim o valor fica correto ao consultar.
[RESOLVIDO] - Apenas mudando de jComboBox.setSelectedItem(object) pra jComboBox.getModel().setSelectedItem(object); 2º Alguns JComboBoxes não são preenchidos quando eu faço uma consulta, enquanto outros são. Existe alguma chance de haver um problema mais interno que a esteja afetando?
1º Ao mandar alterar (uma saída, por exemplo), o método alteraSaida() é chamado:
private void alteraSaida() {
if (tela.confirmar("Tem certeza de que deseja alterar o lançamento?", "Alteração de lançamento")) {
DAOMovimentoFinanceiro daoMovimentoFinanceiro = new DAOMovimentoFinanceiro();
BigDecimal valor = new BigDecimal(Double.parseDouble(tela.getjMoneyFieldSaida().getText()
.replaceAll("[.]", "").replaceAll("[,]", ".")));
MovimentoDeSaida movimentoDeSaida = (MovimentoDeSaida) tela.getLancamentoDaLinhaSelecionada();
movimentoDeSaida.setCodigo((Codigo) tela.getjComboBoxCodigoSaida().getSelectedItem());
movimentoDeSaida.setConta((Conta) tela.getjComboBoxContaSaida().getSelectedItem());
if ((tela.getjCheckBoxRealizadoSaida().isSelected()) && (movimentoDeSaida.isRealizado())) { // se o campo realizado está marcado e o lancamento já estava realizado
movimentoDeSaida.getConta().setQtdCaixa(movimentoDeSaida.getConta().getQtdCaixa()
.subtract(valor.subtract(movimentoDeSaida.getValor())));
} else if ((tela.getjCheckBoxRealizadoSaida().isSelected()) && (!movimentoDeSaida.isRealizado())) { // se o campo realizado está marcado e o lancamento não estava realizado
movimentoDeSaida.getConta().setQtdCaixa(movimentoDeSaida.getConta().getQtdCaixa().subtract(valor));
} else if ((!tela.getjCheckBoxRealizadoSaida().isSelected()) && (movimentoDeSaida.isRealizado())) { // se o campo realizado não está marcado e o lancamento estava realizado
movimentoDeSaida.getConta().setQtdCaixa(movimentoDeSaida.getConta().getQtdCaixa().add(movimentoDeSaida.getValor()));
}
movimentoDeSaida.setData(tela.getjDateChooserSaida().getDate());
movimentoDeSaida.setFavorecido((Favorecido) tela.getjComboBoxFavorecido().getSelectedItem());
movimentoDeSaida.setHistorico(tela.getjTextFieldHistoricoSaida().getText());
movimentoDeSaida.setObra((Obra) tela.getjComboBoxObraSaida().getSelectedItem());
movimentoDeSaida.setValor(valor);
movimentoDeSaida.setRealizado(tela.getjCheckBoxRealizadoSaida().isSelected());
movimentoDeSaida.setNumeroDoDocumento(tela.getjTextFieldDocumentoSaida().getText());
daoMovimentoFinanceiro.atualiza(movimentoDeSaida);
new DAOConta().atualiza(movimentoDeSaida.getConta());
tela.atualizaItemTabela(movimentoDeSaida);
entidades.set(entidades.indexOf(movimentoDeSaida), movimentoDeSaida);
}
}
2º No valueChanged() eu seto o cliente na ComboBox:
[RESOLVIDO] - Apenas usando o repaint() após as alterações. Mas ainda não sei o motivo (interno) desse comportamento. 1º Eu tenho um objeto com um atributo valor (BigDecimal) e tenho uma tela onde posso alterar esse objeto. Quando eu altero e consulto (clico na JTable e os dados são preenchidos nos jTextFields) o JMoneyField que uso come o último digito, apesar do valor ter sido alterado corretamente. Aí eu tenho que abrir a tela novamente e aí sim o valor fica correto ao consultar.
[RESOLVIDO] - Apenas mudando de jComboBox.setSelectedItem(object) pra jComboBox.getModel().setSelectedItem(object); 2º Alguns JComboBoxes não são preenchidos quando eu faço uma consulta, enquanto outros são. Existe alguma chance de haver um problema mais interno que a esteja afetando?