Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Java ::: Classes e Componentes ::: JList

Exemplo completo de como adicionar JCheckBoxes como itens de uma JList e retornar os itens marcados

Quantidade de visualizações: 12213 vezes
/*
 Este exemplo mostra como criar uma JList
 contendo JCheckBoxes. Aprenda a marcar os
 itens e obter quais itens estão marcados.
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class Estudos extends JFrame{
  JList lista;  

  public Estudos() {
    super("A classe JList");
    
    Container c = getContentPane();
    c.setLayout(new FlowLayout(FlowLayout.LEFT));

    // Cria a JList
    lista = new JList();

    // Define o renderizador de células
    lista.setCellRenderer(new CheckBoxCellRenderer());

    // Define os valores da lista
    Object[] cbArray = new Object[4];
    cbArray[0] = new JCheckBox("Goiânia");
    cbArray[1] = new JCheckBox("Brasília");
    cbArray[2] = new JCheckBox("Barra do Garças");
    cbArray[3] = new JCheckBox("Curitiba");
 
    // Atribue os itens à lista
    lista.setListData(cbArray);
    
    // Define a seleção única para a lista
    lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    // Aqui nós permitimos que as checkboxes sejam marcadas
    // ou desmarcadas com a barra de espaço
    lista.addKeyListener(new KeyAdapter(){
      public void keyPressed(KeyEvent e){
        if(e.getKeyCode() == KeyEvent.VK_SPACE){
          int index = lista.getSelectedIndex();
          if(index != -1){
            JCheckBox checkbox = 
              (JCheckBox) lista.getModel().getElementAt(index);
            checkbox.setSelected(!checkbox.isSelected());
            repaint();
          }
        }
      }
    });

    // Aqui nós permitimos que as checkboxes sejam marcadas
    // ou desmarcadas com o mouse
    lista.addMouseListener(new MouseAdapter(){
      public void mousePressed(MouseEvent e){
        int index = lista.locationToIndex(e.getPoint());
        if(index != -1){
          JCheckBox checkbox = 
            (JCheckBox) lista.getModel().getElementAt(index);
          checkbox.setSelected(!checkbox.isSelected());
          repaint();
        }
      }
    });

    // Um botão que permite obter os itens marcados
    JButton btn = new JButton("Obter itens marcados");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          String itens = "";

          for(int i = 0; i < lista.getModel().getSize(); i++){
            JCheckBox checkbox = 
                (JCheckBox) lista.getModel().getElementAt(i);
              if(checkbox.isSelected())
                itens += "Item com índice " + i + 
                  " está marcado\n";
              else
                itens += "Item com índice " + i + 
                  " está desmarcado\n";
          }          

          JOptionPane.showMessageDialog(null, 
            itens);
        }
      }
    );

    // Adiciona a lista à janela
    c.add(new JScrollPane(lista));

    // Adiciona o botão à janela
    c.add(btn);  

    setSize(350, 250);
    setVisible(true);
  }
  
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

// Classe personalizada que permite que os itens
// da lista sejam exibidos como JCheckBoxes
class CheckBoxCellRenderer implements ListCellRenderer{
  Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);  

  public Component getListCellRendererComponent(
       JList list, Object value, int index,
       boolean isSelected, boolean cellHasFocus){
    JCheckBox checkbox = (JCheckBox) value;
    checkbox.setBackground(isSelected ? 
      list.getSelectionBackground() : list.getBackground());
    checkbox.setForeground(isSelected ? 
      list.getSelectionForeground() : list.getForeground());
 
    checkbox.setEnabled(list.isEnabled());
    checkbox.setFont(list.getFont());
    checkbox.setFocusPainted(false);
 
    checkbox.setBorderPainted(true);
    checkbox.setBorder(isSelected ? UIManager.getBorder(
       "List.focusCellHighlightBorder") : noFocusBorder);
 
    return checkbox;
  }
}


Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 18 usuários muito felizes estudando em nosso site.