Blogger templates

Comunidade java aberto - Participe da nossa comunidade no facebook (clique aqui)

Visitas

quarta-feira, 8 de agosto de 2012

JList com CheckBox

,
JList com Checkbox

exemplo simples

Classe

/*
 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 = "";
          /*
           * Loop feito com FOR, para fazer uma varredura
           * para obter quais itens estao marcados ou não
           */
          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 

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

1 comentários:

  • 22 de novembro de 2014 10:14

    É possível fazer isso via propriedades do componente JList, na paleta de componentes do NetBeans?

    delete

Postar um comentário

Insira seu comentário

 

Java Aberto Copyright © 2011 -- Template created by O Pregador -- Powered by Blogger