Ajuda com jComboBox1

13 respostas
L

no meu cadastroreqJDialog tenho o Cadastro de requerimento
com os seguintes campos:

Código do Requerimento

Nome do requerimento

Botão Cadastrar

Até ai beleza, consigo cadastrar esses campos na minha tabela cadreq no pgAdmin do postgresql.

Dae então tenho requerimentoJDialog para requerimento que possui vários campos.

criei uma label “Tipo de Requerimento” e na sua frente adicionei um componente jComboBox1
criei uma label “Código Requerimento” e na sua frente adicionei um jTextField3

os item citados estão na ordem como coloquei

A minha dúvida é: Como fazer com que o que foi cadastrado no JDialog apareça nesses campos
ao escolher algum item do jComboBox1. Por exemplo, Quando eu cadastro o nome do requerimento e,
código do requerimento, colocando por exemplo codigo do requerimento = 1 e nome do requerimento = atestado médico, que o nome do requerimento caisse dentro do jCombobox1 e que quando eu selecionar esse item no jComboBox1, que aparecesse no jTextField3 seu respectivo código.

É muito díficil fazer isso ? Quem puder ajudar com alguma coisa fico agradecida

13 Respostas

F

Boa noite Luciana,
você já populou seu combobox? Se não segue um método de um projeto meu onde eu carrego os produtos cadastrados no banco de dados na JComboBox, para vc ter uma idéia:

public void carregaComboProduto() {
                    try {
                        List<Produto> produtos = new ArrayList<Produto>();
                        ProdutoDAO produtoDAO = new ProdutoDAO();
                        produtos = produtoDAO.listar("tipoProduto"); //método que traz minha lista de produtos ordenado pelo tipo do Produto

                        cmbProduto.addItem(null);

                        for (Produto produto : produtos) {
                            cmbProduto.addItem(produto); //cmbProduto é o meu Jcombobox
                        }
                    } catch (RuntimeException erro) {
                        JOptionPane.showMessageDialog(this, "Erro ao carregar os Produtos",
                                "Produto", JOptionPane.ERROR_MESSAGE);
                        erro.printStackTrace();
                    }
              }
L

Muito obrigada pela dica eu irei tentar. Mas já estou muito agradecida, porque mesmo que eu não consiga, sua ideia já é otima. Valeus !!!

F

Caso não consiga, posta ai! Ah depois que vc carregar seu combobox para que o item selecionado apareça na sua JtextField vc tem que fazer um método para saber quando é selecionado alguma coisa na combobox, segue um exemplo:

seuComboBox.addItemListener(new ItemListener() {
                        @Override
                        public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    //Aqui vc implementa o que desejar quando algo estiver selecionado
                }
            }

   });
L

Não consegui. vou postar meu código do cadastroreqJDialog :

package VISUAL;

import DAL.ConectaBd;

import java.sql.*;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

import net.proteanit.sql.DbUtils;
public class cadastroreqJDialog extends javax.swing.JDialog {

Connection conecta;

PreparedStatement pst;

ResultSet rs;
public cadastroreqJDialog(java.awt.Frame parent, boolean modal) throws ClassNotFoundException {
    super(parent, modal);
    initComponents();
    setLocationRelativeTo(null);
    conecta = ConectaBd.conectabd(); 
    listarRequerimento();
}

public void listarRequerimento(){
    String sql = "select * from cadreq"; // consulta a tabela cadastro de requerimento que é cadreq
    try {
        pst = conecta.prepareStatement(sql);
        rs = pst.executeQuery();
        tblCadreq.setModel(DbUtils.resultSetToTableModel(rs));
    }
    
     catch (SQLException error){
        
        JOptionPane.showMessageDialog(null, error);
    }
    
}

public void cadastrarRequerimento(){  //metodo para cadastrar requerimento
    
    String sql = "Insert into cadreq (codigo,nome) values (?,?)"; //instrução de inserção no BD
    try 
           {

		pst = conecta.prepareStatement (sql);
		pst.setString(1,jTextField1.getText()); // Campo do código  do Jdialog
		pst.setString(2, jTextField2.getText()); // Campo do nome do Jdialog
		pst.execute();
JOptionPane.showMessageDialog(null,Cadastro com sucesso!, Cadastro com sucesso,JOptionPane.INFORMATION_MESSAGE);

listarRequerimento(); // método necessário para atualizar a tabela.

}

catch(SQLException error)

{
JOptionPane.showMessageDialog(null,error);
            
	}
}
//metodo abaixo do botao que uso para cadastrar

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

cadastrarRequerimento();

agora o código do requerimentoJDialog :

package VISUAL;

import DAL.ConectaBd;

import java.sql.*;

public class requerimentoJDialog extends javax.swing.JDialog {

public requerimentoJDialog(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();
    setLocationRelativeTo(null);
}

o nome da minha tabela é cadreq , onde eu cadastro o codigo e o nome .
o nome do meu jComboBox1 é cmbTiporeq

Obrigada pela atenção !!! :slight_smile:

L

Nesse seu código, eu não sei diferenciar quem é a tabela do seu banco de dados, e qual atributo você está chamando no ComboBox. eu ainda não fiz nada no combobox. Ta vazio. Veio com os nomes padrões item1, item 2, mas eu apaguei isso porque é desnecessário. Mas da uma olhadinha no meu código. Obrigada !

F

Você tem uma classe java para o requerimento certo? Onde tem o código e o nome do requerimento?

public void cadastrarRequerimento(Requerimento requerimento){ //modificado, recebe um requerimento como parametro.

String sql = "Insert into cadreq (codigo,nome) values (?,?)"; //instrução de inserção no BD
try 
       {

	pst = conecta.prepareStatement (sql);
	pst.setString(1,requerimento.getCodigo()); //  modificado aqui
	pst.setString(2, requerimento.getNome()); // modificado aqui
	pst.execute();

Ai modifiquei seu código, seu método acima recebe um requerimento como parametro e chama os métodos requerimento.getCodigo() e requerimento.getNome(), ao invés de passar direto a Jtextfield. Ai vc vai instanciar um requerimento antes de chamar o método cadastrar requerimento() e setar os valores da JTextField para ele usando requerimento.setNome("suaTextField");

F
public List<Requerimento> getLista() {
        try {
            List<Requerimento> requerimentos = new ArrayList<Requerimento>();
            PreparedStatement stmt = this.connection.prepareStatement("select * from SUA TABELA BD");

            ResultSet rs = stmt.executeQuery();

            while(rs.next()) {
                Requerimento req = new Requerimento();
                //popula o objeto requerimento
                req.setCodigo(rs.getLong("nome da  sua tabela no BD ref. ao código"));
                req.setNome(rs.getString("nome da tabela ref ao nome"));

                //adiciona requerimento na lista
                requerimentos.add(req);
            }

            rs.close();
            stmt.close();

            return requerimentos;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

Para o listar_requerimeto() tente usar este código acima como exemplo, ele te retorna uma lista de requerimentos do BD que vc vai usar para popular sua JCombobox. Tente separar estes métodos que fazem conexão com BD em outra classe, fora da Dialog.

L

Olá Filipe. Mais uma vez obrigada pela paciência que você tem. Eu vou tentar fazer aqui e retorno para dar um feedback. OBRIGADA !!!

F

Blz! tenta fazer essa parte de carregar o JComboBox, depois partimos para o próximo passo que é pegar a informação do JComboBox

L

Filipe, eu sou novata ainda, sei pouco ainda. Esses dias agora que comecei a beliscar SQL e to procurando tutoriais pela internet. A única classe que criei foi para linkar o banco que se chama ConectaBd. Se não for incômodo, gostaria de lhe enviar o meu projeto feito no netbeans para você olhar. Se puder deixar um email para contato ou eu mesma ja deixo o meu aqui [email removido]. Se você achar que estou lhe explorando, posso até pagar pela informação se necessário para compensar seu esforço. Porque dae em diante, saberei como fazer esse tipo de coisa para ComboBox. Agora que estou no quarto período de sistema de informação que olhei java pela primeira vez, porque as cadeiras que realmente começaram a programar foi nesse período. Mesmo assim fico muito agradecida pela atenção e me desculpa qualquer inconveniente.

F

Pode mandar [email removido]
Eu também estou cursando (Ciência da Computação) e te digo a faculdade só te da uma base, tem muita coisa a ser explorada que nós temos que buscar fora do meio acadêmico, justamente como vc esta fazendo, buscando material na internet, ajuda no GUJ, etc. Eu estou aprendendo também a cada dia, no momento estou fazendo um curso na Caelum (FJ-21) de Programação web com Java e ta me abrindo a visão para buscar outras coisas mais, coisas que vc não imaginava ter, existem!
Pode me mandar e eu dou uma olhada sem cobrar nada pela ajuda, afinal estamos aqui para se ajudar.

L

enviei para seu email. muito obrigada !

L

Filipe Obrigada pela ajuda. E o Jonas também que me ajudou também. Muito grata a todos. Esse fórum tem mostrado atividades reveladoras

Criado 6 de maio de 2016
Ultima resposta 12 de mai. de 2016
Respostas 13
Participantes 2