Adicionar valores ao JComboBox em tempo de execução

5 respostas
R
Olá. tenho esse código aqui:
public class listaEdit extends javax.swing.JFrame {

    public listaEdit() {
        initComponents();
    }

    // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">
    private void initComponents() {
        vlrInserir = new javax.swing.JTextField();
        adicionaCombo = new javax.swing.JButton();
        Combo1 = new javax.swing.JComboBox();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        adicionaCombo.setText("Valor");
        adicionaCombo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                adicionaComboActionPerformed(evt);
            }
        });

        Combo1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Valor A", "Valor B", "Valor C" }));

        jLabel1.setText("Adiciona na Lista");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(28, 28, 28)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(adicionaCombo)
                    .addComponent(vlrInserir, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(Combo1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(35, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(Combo1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 61, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(adicionaCombo)
                .addGap(17, 17, 17)
                .addComponent(vlrInserir, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(37, 37, 37))
        );
        pack();
    }// </editor-fold>

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

    }
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new listaEdit().setVisible(true);
            }
        });
    }
    
    // Declaração de variáveis - não modifique
    private javax.swing.JComboBox Combo1;
    private javax.swing.JButton adicionaCombo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JTextField vlrInserir;
    // Fim da declaração de variáveis
    
}
e precisava pegar nessa caixa de texto e adicionar na lista dos valores do JComboBox para ser a mais na lista. É possível? Obrigado. Ricardo

5 Respostas

wellington7

desculpe, vc quer colocar todos os valores do JComboBox e inserir na caixa de texto, ou apenas o item que for selecionado? E toda vez que for selecioando, ele deve adicionar na caixa de texto abaixo do anterior?

PS. Parabéns, vc é um dos poucos que postam um código completo para facilitar na resposta… :slight_smile:

R

é na verdade é assim: quando o usuário digitar no caixa de texto “Valor D”, ele pega essa String a adiciona no array do JComboBox como um valor a mais… isso em tempo de execução, ou seja, dentro do programa rodando… ai cada vez que a pessoa clicar insere esse valor no combobox… Apenas vou criar algo para não ficar em branco e clicar e inserir “null”…

Valew por enquanto…

Ricardo

lina

Oi,

Da uma olhada:

// // Um botão que permite adicionar itens na JComboBox // JButton io_bt_add = new JButton("Adicionar na JComboBox"); io_bt_add.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { if ( io_tf_campo.getText().length() != 0 ) { io_cb.addItem(io_tf_campo.getText()); io_tf_campo.setText(""); io_tf_campo.requestFocus(); } } } );

Tchauzin!

wellington7
private void adicionaComboActionPerformed(java.awt.event.ActionEvent evt) {
    	String texto = vlrInserir.getText();
    	if (!texto.equals("")) {
    		Combo1.addItem(texto);
    		Combo1.validate();
    	}
    }

ps. Atente para as boas práticas. Nomes de classes começam com letra maiúscula, e de atributos (como seu Combo1) com letra minúscula. :wink:

R

blz! Adicionou… mas surgiu outro problema: quando adiciona, ele fica no array apenas enquanto executa… fechou e abriu a aplicação some os valores do array do combo… É possível resolver isso?
Obrigado!
Ricardo

Criado 21 de dezembro de 2008
Ultima resposta 29 de dez. de 2008
Respostas 5
Participantes 3