Boa dia pessoa, estou desenvolvendo uma pequena aplicação, nela eu tenho a tela de cadastro de emprestimo, no formulario de cadastro de emprestimo tenho campos que são preenchidos dinamicamente pelo banco de dados, o campo tipo equipamento faz que o combobox equipamento seja preenchido dependendo o tipo do equipamento, porem, ao o equipamento ser escolhido, o combobox tombo e serie tambem deveria ser dinamicamente preenchidos, o que não esta acontecendo, o tombo e serie só mudam se ocorrer mudança do tipo do equipamento
PROJETO NO GITHUB:
TelaCadastroEmprestimo.java:
Codigo(Vou abreviar para não ficar mto extenso):
TelaCadastroEmprestimo.java:
private void txtTipoEquipItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_txtTipoEquipItemStateChanged
String tipoequipamentonome = txtTipoEquip.getSelectedItem().toString();
if(!txtTipoEquip.getSelectedItem().equals(tipoequipamentonome))
{
//chama este metodo do controller
controller.atualizaEquipamentoModelo(tipoequipamentonome);
String equip = txtEquipamento.getSelectedItem().toString();
if(txtEquipamento.getSelectedItem().equals(equip))
{
//chama este metodo do controller
controller.atualizaComboTombo(equip);
controller.atualizaComboSerie(equip);
}
}
}
CadastroEmprestimoController.java
package controller;
public class CadastroEmprestimoController
{
//cria arraylist do tipo Emprestimo chamado emprestimos
ArrayList<Emprestimo> emprestimos = new ArrayList<Emprestimo>();
//cria variavel do tipo telacadastroemprestimo e CadastroEmprestimoHelper e chamando-as de view e helper
private TelaCadastroEmprestimo view;
private CadastroEmprestimoHelper helper;
//cria variavel tipo TelaPrincipal chamada telaprincipal
public TelaPrincipal TelaPrincipal;
//metodo construtor
public CadastroEmprestimoController(TelaCadastroEmprestimo view)
{
this.view = view;
this.helper = new CadastroEmprestimoHelper(view);
}
//metodo construtor vazio
public CadastroEmprestimoController()
{
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
}
//metodo para atualizar combobox unidade
public void atualizaUnidade()
{
try
{
//buscar unidade no banco de dados
//cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
Connection conexao = new Conexao().Conectar();
//cria objeto do tipo UnidadeDAO unidadedao passando UnidadeDAO recebendo conexao
UnidadeDAO unidadedao = new UnidadeDAO(conexao);
//cria arraylist de unidade chamado unidades passando o objeto unidadedao do tipo Unidade chamando o metodo selecioneAllUnidade
ArrayList<Unidade> unidades = unidadedao.selecioneAllUnidade();
DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtUnidade().getModel();
combomodel.removeAllElements();
for(Unidade unidade : unidades)
{
combomodel.addElement(unidade);
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null,"Error a preencher combobox unidade:" +ex);
}
}
//metodo para atualizar combobox tipoequipamento
public void atualizarTipoEquip()
{
try
{
//busca equipamento no banco de dados
//cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamado conectar
Connection conexao = new Conexao().Conectar();
//cria objeto do tipo TipoEquipamentoDAO tipoequipamentodao passando TipoEquipamentoDAO recebendo conexao
TipoEquipamentoDAO tipoequipamentodao = new TipoEquipamentoDAO(conexao);
//cria arraylist de tipoequipamento chamado tipoequipamentos passando o objeto tipoequipamentodao do tipo TipoEquipamento chamando o metodo selecioneAllTipoEquipamento
ArrayList<TipoEquipamento> tipoequipamentos = tipoequipamentodao.selecioneAllTipoEquipamento();
DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtTipoEquip().getModel();
combomodel.removeAllElements();
for(TipoEquipamento tipoequipamento : tipoequipamentos)
{
combomodel.addElement(tipoequipamento);
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao preencher o combobox:" +ex);
}
}
//metodo para atualizar combobox equipamento
public void atualizaEquipamento()
{
try
{
//cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
Connection conexao = new Conexao().Conectar();
//cria objeto do tipo EquipamentoDAO equipamentoDAO passando EquipamentoDAO recebendo conexao
EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
//cria arraylist de equipamento chamado equipamentos passando o objeto equipamentoDAO do tipo Equipamento chamando o metodo selecioneAllEquipamento
ArrayList<Equipamento> equipamentos = equipamentoDAO.selecioneAllEquipamento();
DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtEquipamento().getModel();
combomodel.removeAllElements();
for(Equipamento equipamento : equipamentos)
{
combomodel.addElement(equipamento.EquiptoString());
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao preencher combobox equipamento!" + ex);
}
//metodo para atualizar combobox tombo
public void atualizaTombo()
{
try
{
//cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
Connection conexao = new Conexao().Conectar();
//cria objeto do tipo EquipamentoDAO equipamentoDAO passando EquipamentoDAO recebendo conexao
EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
//cria arraylist de equipamento chamado equipamentos passando o objeto equipamentoDAO do tipo Equipamento chamando o metodo selecioneAllEquipamentoTombo
ArrayList<Equipamento> equipamentos = equipamentoDAO.selecioneAllEquipamentoTombo();
DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtTombo().getModel();
combomodel.removeAllElements();
for(Equipamento equipamento : equipamentos)
{
combomodel.addElement(equipamento.TombotoString());
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao preencher combobox tombo por equipamento!" + ex);
}
}
//metodo para atualizar combobox equipamento passando tipoequipamentonome
public void atualizaEquipamentoModelo(String tipoequipamentonome)
{
try
{
//cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
Connection conexao = new Conexao().Conectar();
//cria objeto do tipo EquipamentoDAO equipamentoDAO passando EquipamentoDAO recebendo conexao
EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
//cria arraylist de equipamento chamado equipamentos passando o objeto equipamentoDAO do tipo Equipamento chamando o metodo selecionarAllModeloPorTipoEquip passando tipoequipamentonome
ArrayList<Equipamento> equipamentos = equipamentoDAO.selecionarAllModeloPorTipoEquip(tipoequipamentonome);
DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtEquipamento().getModel();
combomodel.removeAllElements();
for(Equipamento equipamento : equipamentos)
{
combomodel.addElement(equipamento.EquiptoString());
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao preencher combobox equipamento por tipo equipamento!" + ex);
}
}
//metodo para atualizar combobox tombo passando equip
public void atualizaComboTombo(String equip)
{
try
{
//cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
Connection conexao = new Conexao().Conectar();
//cria objeto do tipo EquipamentoDAO equipamentoDAO passando EquipamentoDAO recebendo conexao
EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
//cria arraylist de equipamento chamado equipamentos passando o objeto equipamentoDAO do tipo Equipamento chamando o metodo selecioneAllEquipamentoTomboStringEquip passando equip passando equip
ArrayList<Equipamento> equipamentos = equipamentoDAO.selecioneAllEquipamentoTomboStringEquip(equip);
DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtTombo().getModel();
combomodel.removeAllElements();
for(Equipamento equipamento : equipamentos)
{
combomodel.addElement(equipamento.TombotoString());
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao preencher combobox tombo por equipamento!" + ex);
}
}
//metodo para atualizar combo serie passando equip
public void atualizaComboSerie(String equip)
{
try
{
//cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
Connection conexao = new Conexao().Conectar();
//cria objeto do tipo EquipamentoDAO equipamentoDAO passando EquipamentoDAO recebendo conexao
EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
//cria arraylist de equipamento chamado equipamentos passando o objeto equipamentoDAO do tipo Equipamento chamando o metodo selecioneAllEquipamentoSerieStringEquip passando equip passando equip
ArrayList<Equipamento> equipamentos = equipamentoDAO.selecioneAllEquipamentoSerieStringEquip(equip);
DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtSerie().getModel();
combomodel.removeAllElements();
for(Equipamento equipamento : equipamentos)
{
combomodel.addElement(equipamento.SerietoString());
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao preencher combobox serie por equipamento!" + ex);
}
}
//metodo para atualizar combobox serie
public void atualizaSerie()
{
try
{
//cria objeto do tipo connection conexao passando novo Conexao(conexao.java) chamando metodo conectar
Connection conexao = new Conexao().Conectar();
//cria objeto do tipo EquipamentoDAO equipamentoDAO passando EquipamentoDAO recebendo conexao
EquipamentoDAO equipamentoDAO = new EquipamentoDAO(conexao);
//cria arraylist de equipamento chamado equipamentos passando o objeto equipamentoDAO do tipo Equipamento chamando o metodo selecioneAllEquipamentoSerie
ArrayList<Equipamento> equipamentos = equipamentoDAO.selecioneAllEquipamentoSerie();
DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtSerie().getModel();
combomodel.removeAllElements();
for(Equipamento equipamento : equipamentos)
{
combomodel.addElement(equipamento.SerietoString());
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao preencher combobox serie por equipamento!" + ex);
}
}
}
EquipamentoDAO.java:
package model.DAO;
public class EquipamentoDAO
{
private final Connection conexao;
//metodo construtor
public EquipamentoDAO(Connection conexao)
{
this.conexao = conexao;
}
//metodo para trazer todos equipamentos do banco de dados
public ArrayList<Equipamento> selecioneAllEquipamento() throws SQLException {
ArrayList equipamentos = new ArrayList();
//Faz a instância da classe equipamento
String sql = "select * from equipamento as e inner join unidade u on e.unidade = u.id inner join tipoequipamento as tp on e.tipoequip = tp.id inner join\n" +
"fornecedor as f on e.fornecedor = f.id inner join fabricante as fab on e.fabricante = fab.id";
//Instrução SQL para seleção de registro específico da tabela equipamento;
try {
PreparedStatement pstm = conexao.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
while(rs.next()){
Equipamento equipamento = new Equipamento();
//Laço de repetição para preencher com os dados do banco o objeto equipamento;
equipamento.setId(rs.getInt("id"));
Unidade unidade = new Unidade();
unidade.setId(rs.getInt("id"));
unidade.setUnidadenome(rs.getString("unidadenome"));
equipamento.setUnidade(unidade);
TipoEquipamento tipoequipamento = new TipoEquipamento();
tipoequipamento.setId(rs.getInt("id"));
tipoequipamento.setTipoequipamento(rs.getString("tipoequipamentonome"));
equipamento.setTipoequip(tipoequipamento);
equipamento.setTombo(rs.getString("tombo"));
equipamento.setSerie(rs.getString("serie"));
Fornecedor fornecedor = new Fornecedor();
fornecedor.setId(rs.getInt("id"));
fornecedor.setFornecedornome(rs.getString("fornecedornome"));
equipamento.setFornecedor(fornecedor);
Fabricante fabricante = new Fabricante();
fabricante.setId(rs.getInt("id"));
fabricante.setFabricantenome(rs.getString("fabricantenome"));
equipamento.setFabricante(fabricante);
equipamento.setModelo(rs.getString("modelo"));
equipamento.setStatus(rs.getString("status"));
equipamento.setEquipamento(rs.getString("equipamento"));
equipamento.setObservacao(rs.getString("observacao"));
//"seta" os atributos da classe Equipamento com os dados dos campos do banco - pega os dados do banco para pesquisa no formulário;
equipamentos.add(equipamento);
}
} catch (SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao pesquisar todos equipamentos no banco de dados!" +ex,"Error!", JOptionPane.INFORMATION_MESSAGE);
}
finally
{
//feche a conexao
conexao.close();
}
//retorne o array equipamentos
return equipamentos;
}
//metodo para trazer todos equipamentos por tipo equipamento
public ArrayList<Equipamento> selecionarAllEquipPorTipoEquip(String tipoequipamentonome) throws SQLException
{
ArrayList equipamentos = new ArrayList();
//Faz a instancia da classe Equipamento
String sql = " select * from equipamento as e inner join unidade u on e.unidade = u.id inner join tipoequipamento as tp on e.tipoequip = tp.id inner join fornecedor as f on e.fornecedor = f.id inner join fabricante as fab on e.fabricante = fab.id where tp.tipoequipamentonome = ?";
//Instrução SQL para seleção de registro específico da tabela Equipamento;
try
{
PreparedStatement pstm = conexao.prepareStatement(sql);
pstm.setString(1, tipoequipamentonome);
ResultSet rs = pstm.executeQuery();
while (rs.next())
{
Equipamento equipamento = new Equipamento();
//Laço de repetição para preencher com os dados do banco o objeto equipamento;
equipamento.setId(rs.getInt("id"));
Unidade unidade1 = new Unidade();
unidade1.setId(rs.getInt("id"));
unidade1.setUnidadenome(rs.getString("unidadenome"));
equipamento.setUnidade(unidade1);
TipoEquipamento tipoequipamento = new TipoEquipamento();
tipoequipamento.setId(rs.getInt("id"));
tipoequipamento.setTipoequipamento(rs.getString("tipoequipamentonome"));
equipamento.setTipoequip(tipoequipamento);
equipamento.setTombo(rs.getString("tombo"));
equipamento.setSerie(rs.getString("serie"));
Fornecedor fornecedor = new Fornecedor();
fornecedor.setId(rs.getInt("id"));
fornecedor.setFornecedornome(rs.getString("fornecedornome"));
equipamento.setFornecedor(fornecedor);
Fabricante fabricante = new Fabricante();
fabricante.setId(rs.getInt("id"));
fabricante.setFabricantenome(rs.getString("fabricantenome"));
equipamento.setFabricante(fabricante);
equipamento.setModelo(rs.getString("modelo"));
equipamento.setStatus(rs.getString("status"));
equipamento.setEquipamento(rs.getString("equipamento"));
equipamentos.add(equipamento);
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao pesquisar todos equipamentos por tipo equipamento no banco de dados!" + ex,"Error!", JOptionPane.INFORMATION_MESSAGE);
}
finally
{
//feche a conexao
conexao.close();
}
//retorne o array equipamentos
return equipamentos;
}
//metodo para trazer todos modelos de equipamento por tipo equipamento
public ArrayList<Equipamento> selecionarAllModeloPorTipoEquip(String tipoequipamentonome) throws SQLException
{
ArrayList equipamentos = new ArrayList();
//Faz a instancia da classe Equipamento
String sql = " select e.modelo from equipamento as e inner join unidade u on e.unidade = u.id inner join tipoequipamento as tp on e.tipoequip = tp.id inner join fornecedor as f on e.fornecedor = f.id inner join fabricante as fab on e.fabricante = fab.id where tp.tipoequipamentonome = ?";
//Instrução SQL para seleção de registro específico da tabela Equipamento;
try
{
PreparedStatement pstm = conexao.prepareStatement(sql);
pstm.setString(1, tipoequipamentonome);
ResultSet rs = pstm.executeQuery();
while (rs.next())
{
Equipamento equipamento = new Equipamento();
//Laço de repetição para preencher com os dados do banco o objeto equipamento;
equipamento.setModelo(rs.getString("modelo"));
equipamentos.add(equipamento);
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao pesquisar todos modelos de equipamento por tipo equipamento no banco de dados!" + ex,"Error!", JOptionPane.INFORMATION_MESSAGE);
}
finally
{
//feche a conexao
conexao.close();
}
//retorne o array equipamentos
return equipamentos;
}
//metodo para trazer todos os tombos por equipamento
public ArrayList selecioneAllEquipamentoTombo() throws SQLException
{
ArrayList equipamentos = new ArrayList();
//Faz a instancia da classe Equipamento
String sql = "select e.tombo from equipamento as e inner join unidade u on e.unidade = u.id inner join tipoequipamento as tp on e.tipoequip = tp.id inner join fornecedor as f on e.fornecedor = f.id inner join fabricante as fab on e.fabricante";
try
{
PreparedStatement pstm = conexao.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
while(rs.next())
{
Equipamento equipamento = new Equipamento();
equipamento.setTombo(rs.getString("tombo"));
equipamentos.add(equipamento);
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao pesquisar todos tombos por equipamentos!" + ex,"Error!", JOptionPane.INFORMATION_MESSAGE);
}
finally
{
//feche a conexao
conexao.close();
}
//retorne o array equipamentos
return equipamentos;
}
//metodo para trazer todos os tombos por equipamento passando equip
public ArrayList selecioneAllEquipamentoTomboStringEquip(String equip) throws SQLException
{
ArrayList equipamentos = new ArrayList();
//Faz a instancia da classe Equipamento
String sql = "select distinct e.tombo from equipamento as e inner join unidade u on e.unidade = u.id inner join tipoequipamento as tp on e.tipoequip = tp.id inner join fornecedor as f on e.fornecedor = f.id inner join fabricante as fab on e.fabricante where e.modelo = ?";
try
{
PreparedStatement pstm = conexao.prepareStatement(sql);
pstm.setString(1, equip);
ResultSet rs = pstm.executeQuery();
while(rs.next())
{
Equipamento equipamento = new Equipamento();
equipamento.setTombo(rs.getString("tombo"));
equipamentos.add(equipamento);
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao pesquisar todos tombos por equipamentos!" + ex,"Error!", JOptionPane.INFORMATION_MESSAGE);
}
finally
{
//feche a conexao
conexao.close();
}
//retorne o array equipamentos
return equipamentos;
}
//metodo para trazer todas as series por equipamento
public ArrayList selecioneAllEquipamentoSerie() throws SQLException
{
ArrayList equipamentos = new ArrayList();
//Faz a instancia da classe Equipamento
String sql = "select distinct e.serie from equipamento as e inner join unidade u on e.unidade = u.id inner join tipoequipamento as tp on e.tipoequip = tp.id inner join fornecedor as f on e.fornecedor = f.id inner join fabricante as fab on e.fabricante";
try
{
PreparedStatement pstm = conexao.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
while(rs.next())
{
Equipamento equipamento = new Equipamento();
equipamento.setSerie(rs.getString("serie"));
equipamentos.add(equipamento);
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao pesquisar todas series por equipamentos!" + ex,"Error!", JOptionPane.INFORMATION_MESSAGE);
}
finally
{
//fecha a conexao
conexao.close();
}
//retorne o array equipamentos
return equipamentos;
}
//metodo para trazer todas as series por equipamento passando equip
public ArrayList<Equipamento> selecioneAllEquipamentoSerieStringEquip(String equip) throws SQLException
{
ArrayList equipamentos = new ArrayList();
//Faz a instancia da classe Equipamento
String sql = "select e.serie from equipamento as e inner join unidade u on e.unidade = u.id inner join tipoequipamento as tp on e.tipoequip = tp.id inner join fornecedor as f on e.fornecedor = f.id inner join fabricante as fab on e.fabricante where e.modelo = ?";
try
{
PreparedStatement pstm = conexao.prepareStatement(sql);
pstm.setString(1, equip);
ResultSet rs = pstm.executeQuery();
while(rs.next())
{
Equipamento equipamento = new Equipamento();
equipamento.setSerie(rs.getString("serie"));
equipamentos.add(equipamento);
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null, "Error ao pesquisar todas series por equipamentos!" + ex,"Error!", JOptionPane.INFORMATION_MESSAGE);
}
finally
{
//feche a conexao
conexao.close();
}
//retorne o array equipamentos
return equipamentos;
}
}