CheckBox criado dinamicamente com checked = true não insere o nome no ArrayList

3 respostas
java
E

Pessoal, a ideia é que quando o usuário escolher um campo identificado no checkbox o sistema deverá inserir o texto do checkbox no ArrayList. Mas esta pegando apenas o ultimo nome do ultimo checkbox.

public void listarOpcoesDeCampos() {
//para manipular o arrayList de campos voce dever criar outro arrayList para recebe-lo e assim com lst.get(0) chamar o campo desejado
lstCamposRetornados = retornarNomesCampos(); //retornando o codigo -> lstCamposRetornados.get(0) -> este procedimento me da acesso a qdeColunas tb

//definindo o posicionamento dos checksbox dos campos
    int pos_coluna = 50, pos_linha = 40, tam_linha = 250, alt_linha = 30;

    for (int i = 0; i < qdeColunas; i++) {
        //criando e mostrando um checkbox com o nome da coluna da tabela
        chk = new JCheckBox();
        chk.setBounds(pos_coluna, pos_linha, tam_linha, alt_linha);
        c.add(chk);
        c.repaint();
        chk.setText(retornarNomesCampos().get(i));         //setando o nome da coluna no checbox            
        
        //registrando o objeto que sofrerá ação
        chk.addActionListener(this);
        
        //se posicionando para criacao do proximo checkbox
        pos_coluna = 50;
        pos_linha = pos_linha + 20;
    }
           
}
<a class="mention" href="/u/override">@Override</a>

public void actionPerformed(ActionEvent e) {

lstListaCampos.add(chk.getText());

}

Fiz um laço for para visualizar o que a lista contem e percebi que esta pegando somente o último ítem

saída atual:
campo OBS
campo OBS

A saida desejada é:
campo CODIGO
campo OBS

Ou seja no ArrayList deverá conter apenas os ítens(checkbox) selecionados.

3 Respostas

darlan_machado

O problema não é na leitura dos dados do arraylist, mas, na inserção.

H

muda para chk.getSelectedItem(), pois JCeckBox é diferente de JTextField.

E

Ao clicar no ponto não aparece a opção de getSelectedIem().

Criado 19 de abril de 2018
Ultima resposta 19 de abr. de 2018
Respostas 3
Participantes 3