Estou utilizando o NetBeans. Talvez esteja com problema de lógica.
SITUAÇÃO: Tenho um painel com diversos checkbox a serem marcados pelo usuário e um checkbox (MARCATUDO) que marca/desmarca todos eles. Até aqui é fácil.
PROBLEMA: Se todos os checkbox iniciam marcados, ao DESMARCAR qualquer um deles, queria que o MARCATUDO ficasse desmarcado.
Não consegui fazer pois está parecendo o cachorro correndo atrás do rabo, pois, ao desmarcar qualquer checkbox envio um comando de desmarcar o MARCATUDO. Mas isso parece que dispara um evento no MARCATUDO para desmarcar todos os checkbox.
Não sei se me fiz entender. Deve ser uma situação clássica. Tem solução?
Posta o seu código
private void jCheckTodasItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
Component c;
for (int i = 0; i < jPanel3.getComponentCount(); i++) {
// c recebe o componente
c = jPanel3.getComponent(i);
// ehBoxComExtensao retorna true se estivermos tratando um checkbox
// com as extensões (jpg, mp4, etc...)
if (ehBoxComExtensao(c)) {
if (jCheckTodas.isSelected()) {
((JCheckBox) c).setSelected(true);
}
else {
((JCheckBox) c).setSelected(false);
}
}
}
}
// varre todos os componentes de um painel repassado a procura de quais
// sejam checkbox cujo texto seja uma extensão
private boolean ehBoxComExtensao(Component c) {
// verifica se é uma instância de CheckBox
if (c instanceof JCheckBox) {
String str = ((JCheckBox) c).getText();
// verifica se NÃO eh o botão "Todas"
if (!(str.equals(jCheckTodas.getText()))){
return true;
}
}
return false;
}
Se puder passar o código inteiro da classe, gostaria de tentar reproduzir o problema e também ver como está a adição dos seus listeners.