Ir ao conteúdo

Posts recomendados

Postado

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

Postado

Bem, seu eu entendi certo, você precisa alterar os elementos do segundo ComboBox conforme a seleção do primeiro for mudando. Semelhante quando você tem que escolher estado e cidade, conforme muda o estado, atualiza a lista de cidades.

Postado

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);
    }
}

 

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...