Ate funcionou so a selecao que ficou fixa naum consigou desmarcar um item…
no casso adicionei todos os componentes ja selecionados mas naum consigou desmarcar-los…
Ate funcionou so a selecao que ficou fixa naum consigou desmarcar um item…
no casso adicionei todos os componentes ja selecionados mas naum consigou desmarcar-los…
Olha eu te passei essa classe, mas eu tenho uma personalizada que tive que alterar pra ficar do jeito que eu queria… só vc mudar e adaptar pra vc…
Vc de alguma maneira vai ter que passar o limite do seu Array para o For não bugar sendo infinito…
Depois q vc arrumou bonitinho vc tem que passar esses eventos para seu JFrame…
O codigo ta la embaixo…
[code]/**
também o componente checkbox para o usuário poder selecionar.
*/
package negocio.apresentacao;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JList;
import javax.swing.JCheckBox;
import negocio.clsCSV;
/*
/**
@data 29/11/2012
@author Charleston Anjos
@version 12.101
@alteração 29/11/2012
*/
public class clsJList implements interfaces.interfaceJList {
clsCSV csv = new clsCSV();
private int total_linha = 0; //VARIAVEL PRINCIPAL (para saber o limite do for)
public clsJList(){
//pega o total de linhas que existem no registro csv
try {
total_linha = csv.TotalLinha();
} catch (Exception ex) {
Logger.getLogger(clsJList.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void ClicaLista(JList jLista,java.awt.event.MouseEvent evt){
int index = jLista.locationToIndex(evt.getPoint());
if(index != -1){
JCheckBox checkbox = (JCheckBox) jLista.getModel().getElementAt(index);
checkbox.setSelected(!checkbox.isSelected());
jLista.repaint();
}
}
public void PreencheLista(JList jLista){
try{
//Permite que a lista possa conter CheckBox
jLista.setCellRenderer(new clsCheckBoxCellRenderer());
//objeto que vai guardar os valores da lista
Object[] cbArray = new Object[3];
//faz um looping até o final
//obs: a linha 0 é o nome da coluna
for(int i=0;i<total_linha;i++){
cbArray[i] = new JCheckBox("1");
}
//preenche com os dados da tabela
jLista.setListData(cbArray);
}catch(Exception e){
e.printStackTrace();
}
}
public void SelecionarTodos(JList jLista){
for(int i=0;i<total_linha;i++){
int index = i;
if(index != -1){
JCheckBox checkbox = (JCheckBox) jLista.getModel().getElementAt(index);
checkbox.setSelected(true);
jLista.repaint();
}
}
}
public void DeselecionarTodos(JList jLista){
for(int i=0;i<total_linha;i++){
int index = i;
if(index != -1){
JCheckBox checkbox = (JCheckBox) jLista.getModel().getElementAt(index);
checkbox.setSelected(false);
jLista.repaint();
}
}
}
public String PegaItemLista(JList jLista){
String item = null;
try {
/*
* faz um busca em todos os checkbox da lista
* para verificar quais estão selecionados
* e retornando o texto do checkbox
*/
//verifica em toda lista
for(int i=0;i<total_linha;i++){
//pega o indice pela contagem do for
int index = i;
if(index != -1){
//pega o checkbox da lista para fazer a comparação
JCheckBox checkbox = (JCheckBox) jLista.getModel().getElementAt(index);
//verifica se o checkbox da lista foi selecionado
if (checkbox.isSelected()==true){
item = checkbox.getText();
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return item;
}
}
[/code]
Passando eventos para a Lista do seu Jframe
[code]
clsJList lista = new clsJList(); //objeto da classe
/** Creates new form jfMensagem */
public jfFrame() {
initComponents();
lista.PreencheLista(nome_da_sua_lista);
}[/code]
[code]
private void jListaPCMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
lista.ClicaLista(jListaPC, evt);
}
private void jcbSelecaoTodosActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(jcbSelecaoTodos.isSelected())lista.SelecionarTodos(jListaPC);
else lista.DeselecionarTodos(jListaPC);
} [/code]
Entao consegui resolver colocando um evento de mouselistener e programando no metodo do mouse click fazendo a logica para trocar a seleção do componente muito obrigado pela sua ajuda amigo valeu mesmo…
Se precisar “Tamo Aí”…
=]