Pessoal, boa noite!
Tenho o seguindo código dentro de um botão:
try {
int index = tblItens.getSelectedRow();
if(index != -1){
Item i = itens.get(index);
if(cbbProduto.getSelectedIndex() != -1){
Produto p = (Produto) cbbProduto.getSelectedItem();
i.setFkMarca(p.getFkMarca());
i.setFkModelo(p.getFkModelo());
i.setFkCategoria(p.getFkCategoria());
}else{
JOptionPane.showMessageDialog(this, "Não é possível editar o item sem selecionar um produto.", "Erro", JOptionPane.ERROR_MESSAGE);
}
if(cbbPessoa.getSelectedIndex() != -1){
Pessoa ps = (Pessoa) cbbPessoa.getSelectedItem();
i.setFkPessoa(ps.getCod());
}
if(cbbEmpresa.getSelectedIndex() != -1){
Empresa e = (Empresa) cbbEmpresa.getSelectedItem();
i.setFkEmpresa(e.getCod());
}
if(cbbEmpresa.getSelectedIndex() != -1){
Empresa e = (Empresa) cbbEmpresa.getSelectedItem();
i.setFkEmpresa(e.getCod());
}
if(cbbSetor.getSelectedIndex() != -1){
Setor s = (Setor) cbbSetor.getSelectedItem();
i.setFkSetor(s.getCod());
}
if(itemDao.alt(i)){
cleanFields();
i = itemDao.returnLastItem();
itens.add(i);
loadTable(itens);
JOptionPane.showMessageDialog(this, "O item foi atualizado com sucesso no banco de dados.", "Informação", JOptionPane.INFORMATION_MESSAGE);
}
}else{
JOptionPane.showMessageDialog(this, "Impossível editar sem selecionar o item desejado.", "Erro", JOptionPane.ERROR_MESSAGE);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro durante o processo.", "Erro", JOptionPane.ERROR_MESSAGE);
}
E em determinado momento, mesmo o combobox estando vazio, o método getSelectedIndex retorna 0, quando deveria me retornar -1, com isso o código abaixo acaba criando um objeto null e me retornando erro ao realizar a modificação que preciso.
if(cbbSetor.getSelectedIndex() != -1){
Setor s = (Setor) cbbSetor.getSelectedItem();
i.setFkSetor(s.getCod());
}
Para preencher os boxes, eu utilizo campos de texto fazendo busca de acordo com o que o usuário deseja.
if(evt.getKeyCode() == KeyEvent.VK_ENTER){
if(!txtPesPessoa.getText().isEmpty()){
cbbPessoa.removeAllItems();
PersonDao personDao = new PersonDao();
for(Pessoa p : personDao.listar(txtPesPessoa.getText())){
cbbPessoa.addItem(p);
}
}
}else if((evt.getKeyCode() == KeyEvent.VK_BACKSPACE) && (txtPesPessoa.getText().length()-1 == 0)){
cbbPessoa.removeAllItems();
}
e quando vou alterar, acabo recebendo esse retorno de objecto null, alguém pode me ajudar?