Ir ao conteúdo
  • Cadastre-se

Java Atualizar um combobox a partir de outro combobox


Posts recomendados

Boa tarde pessoa, estou desenvolvendo uma aplicação e estou com duvida em relação ao combobox swing no meu form de cadastro de equipmento, eu tenho o combobox nome e data, o combobox data deve ser atualizado dependendo do combobox nome selecionado

consegui fazer os preenchimento individuais das combobox, porém não consigo entender o que tenho que fazer para que o combobox data esteja relacionado com o combobox nome, ao fazer a seleção de um nome no combobox nome, o combobox data deveria trazer a data respectiva ao nome

 

Exemplo na imagem:

 

PROJETO NO GITHUB: https://github.com/YUSEIRENDER/SemurCEI

 

vou abreviar parte do codigo fonte pois o codigo esta muito extenso

CODIGO FONTE:

CADASTROEQUIPAMENTOCONTROLLER.JAVA:

 public void atualizaNome()
    {
        
        try
        {
            
            //buscar login nome do 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 LoginDAO chamado logindao passando novo LoginDAO recebendo conexao
            LoginDAO logindao = new LoginDAO(conexao);
            
            //cria arraylist de Login chamado logins passando o objeto logindao do tipo Login chamando o metodo selecione all login
            ArrayList<Login> logins = logindao.selecioneAllLogin();
            
            
            //exibir login nome no combobox nome            
            helper.preencherNome(logins);
            
        }
        catch(SQLException ex)
        {
            
            JOptionPane.showMessageDialog(null,"Error a preencher combobox nome:" +ex);
            
        }    
        
    }        
    
    public void atualizarData()
    {
        
        try
        {
            
            //buscar login nome do 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 LoginDAO chamado logindao passando novo LoginDAO recebendo conexao
            LoginDAO logindao = new LoginDAO(conexao);
            
            //cria arraylist de Login chamado logins passando o objeto logindao do tipo Login chamando o metodo selecione all login
            ArrayList<Login> logins = logindao.selecioneAllLogin();
            
            
            //exibir login nome no combobox nome            
            helper.preencherData(logins);
            
        }
        catch(SQLException ex)
        {
            
            JOptionPane.showMessageDialog(null,"Error a preencher combobox data:" +ex);
            
        }    

 

CADASTROEQUIPAMENTOHELPER.JAVA:

public void preencherNome(ArrayList logins) {

DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtComboNome().getModel();

for(Login login : logins)
{
    
    combomodel.addElement(login.nomeToString());
    
}    
}

public void preencherData(ArrayList logins) {

DefaultComboBoxModel combomodel = (DefaultComboBoxModel) view.getTxtComboData().getModel();

for(Login login : logins)
{
    
    combomodel.addElement(login.DatatoString());
    
}    

 

LOGINDAO.JAVA:

//metodo para trazer todos logins do banco de dados   
 public ArrayList<Login> selecioneAllLogin() throws SQLException {
   ArrayList logins = new ArrayList();
    //Faz a instância da classe Login 
   String sql = "select * from login";
    //Instrução SQL para seleção de registro específico da tabela login;
    try {
        PreparedStatement pstm = conexao.prepareStatement(sql);
        ResultSet rs = pstm.executeQuery();
        while(rs.next()){
            Login login = new Login();
            //Laço de repetição para preencher com os dados do banco o objeto Login;
            login.setId(rs.getInt("id"));
            login.setUsuario(rs.getString("usuario"));
            login.setSenha(rs.getString("senha"));
            login.setNome(rs.getString("nome"));
            login.setEmail(rs.getString("email"));
            login.setTipo(rs.getString("tipo"));
            login.setData(rs.getTimestamp("data"));
            //"seta" os atributos da classe Login com os dados dos campos do banco - pega os dados do banco para pesquisa no formulário;
            logins.add(login);
        }
    } catch (SQLException ex) 
    {

        JOptionPane.showMessageDialog(null, "Error ao pesquisar todos logins no banco de dados!" +ex);
        
    }
    finally
    {
            //feche a conexao
            conexao.close();    
        
    }    
  //retorne o array logins  
  return logins;
 }

 

LOGIN.JAVA:

public String nomeToString() {

return getNome();
}

public String DatatoString() {

return getData().toString();
}

 

exemplo programa.png

Link para o comentário
Compartilhar em outros sites

Bem, como eu disse você precisa ir mudando os itens do segundo ComboBox conforme a seleção do primeiro for mudando.

 

Para isso você pode usar um ActionListener no primeiro ComboBox, dentro desse listener você preenche o segundo ComboBox de acordo com o item selecionado.

 

Veja um exemplo:

public class Principal {

    public static void main(String[] args) {
        new Janela().setVisible(true);
    }
}

 

 

import javax.swing.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Janela extends JFrame {

    private JComboBox<String> comboBoxTipo;
    private JComboBox<String> comboBoxItem;


    public Janela() {
        setTitle("Seleção de Produtos");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setSize(300, 100);

        configure();
    }


    private List<String> getListaFruta() {
        return Arrays.asList("Abacaxi", "Mamão", "Morango");
    }

    private List<String> getListaLegume() {
        return Arrays.asList("Beterraba", "Cenoura", "Chuchu");
    }


    private void configure() {
        comboBoxTipo = new JComboBox<>(new String[]{"Selecione", "Legume", "Fruta"});
        comboBoxTipo.addActionListener(event -> {
            String       tipo = (String) comboBoxTipo.getSelectedItem();
            List<String> items;

            switch (tipo) {
                case "Legume":
                    items = getListaLegume();
                    break;
                case "Fruta":
                    items = getListaFruta();
                    break;
                case "Selecione":
                default:
                    items = Collections.emptyList();
                    break;
            }

            DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>(items.toArray(new String[0]));
            comboBoxItem.setModel(model);
        });

        comboBoxItem = new JComboBox<>();

        JPanel panel = new JPanel();
        panel.add(comboBoxTipo);
        panel.add(comboBoxItem);

        add(panel);
    }
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...