JCheckBox con changelistener

ariannaari

Nuovo Utente
28 Set 2010
22
10
0
Salve a tutti, avrei bisogno di una mano per gestire un evento in Java.
Sto lavorando ad un'applicazione in Javaswing, sarò un po' prolissa per farmi capire bene.
Allora, ho 6 JCheckBox: cb1, cb2, cb3, cb4, cb5, cb6 che appartengono ad un botton group particolare che fa sì che al massimo siano selezionate 3 su 6 checkbox.

Ecco il codice del BottonGroup esteso, è una classe apparte (classe checkBoxMenu) :

Codice:
package presentation.componenti;
import java.awt.*;
import java.util.*;
import javax.swing.*;
/**
 *
 * @author Arianna
 * 
 * questa classe fa in  modo che possano essere cliccati al massimo 3 voci del checkbox group
 */
public class checkBoxMenu extends ButtonGroup{
    
    private int maxCount;
    private HashSet<ButtonModel> set;

    public checkBoxMenu (int maxCount)
        {
        this.maxCount = maxCount;
        set = new HashSet<ButtonModel> ();
        }

    public void add (AbstractButton b)
        {
        if (b == null)
            return;

        buttons.addElement (b);
        setSelected (b.getModel (), b.isSelected ());
        b.getModel ().setGroup (this);
        }

    public void remove (AbstractButton b)
        {
        if (b == null)
            return;

        buttons.removeElement (b);
        set.remove (b.getModel ());
        b.getModel ().setGroup (null);
        }

    public boolean isSelected (ButtonModel m)
        {
        return set.contains (m);
        }

    public void setSelected (ButtonModel m, boolean b)
        {
        if (b && set.size() < maxCount)
            set.add (m);
        else
            set.remove (m);
            
        }
}

quindi, dopo aver creato i vari cb1, cb2...nella classe in cui li utilizzo (classe form_menurapido) li ho uniti nel gruppo:

Codice:
group = new checkBoxMenu (3);
        group.add(cb1);
        group.add(cb2);
        group.add(cb3);
        group.add(cb4);
        group.add(cb5);
        group.add(cb6);

Ora, a me servirebbe un contatore che mi conta real time quante checkbox sono selezionate attualmente, e dopo ogni mia azione. Avevo pensato di inserire per ogni checkbox l'action listener seguente:


Codice:
cb6.addMouseListener(new java.awt.event.MouseListener() {
            public void mouseClicked(MouseEvent e) {
                if (cb6.isSelected()==false) 
                {a6 = false; //è una variabile booleana che tengo solo per vedere se funziona
                count--;
                }
                else a6 = true;
                
                if (cb6.isSelected()==true) 
                {a6 = true;
                count++;
                }
                else a6 = false;
                System.out.println("a6="+a6+" count="+count);
            }
            public void mousePressed(MouseEvent e) {
            //throw new UnsupportedOperationException("Not supported yet.");
            }
            public void mouseReleased(MouseEvent e) {
               // throw new UnsupportedOperationException("Not supported yet.");
            }
            public void mouseEntered(MouseEvent e) {
               // throw new UnsupportedOperationException("Not supported yet.");
            }

            public void mouseExited(MouseEvent e) {
               // throw new UnsupportedOperationException("Not supported yet.");
            }
        });

Ovviamente, per ognuno dei cbi...
Questo metodo funziona, tranne per il fatto che, se ho già 3 cb selezionati, e vado a cliccare sul 4°, il 4° non viene selezionato, ma il counter si decrementa ugualmente.

Avete soluzioni da suggerirmi?
Mi viene in mente che dovrei usare un changelistener, ma non so bene come funziona... io dovrei ottenere che: se il cb passa da selected a not selected il counter si decrementi di uno, se passa da not selected a selected il counter si incrementi di uno, e se invece clicco ma non c'è nessun cambio di stato allora in counter non si decrementi, nè incrementi.

Idee? grazie comunque :D
 
Discussioni simili
Autore Titolo Forum Risposte Data
F access ricerca record con apostrofo. MS Access 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
C Come ricreare questo calcolatore di prezzi a step con woocommerce? WordPress 0
C Segnalo barra laterale di navigazione ASSENTE con Chrome Comunicazioni dallo Staff 5
G Guadagna dalla Vendita di Articoli Sponsorizzati con GuestPostMax.com! Guadagnare col Sito 0
P Hosting multidominio con Plesk Hosting 0
L Soluzione con INNER JOIN Database 0
S passare un valore da un form a un file .php con metodo post PHP 4
A Redirect 301 genera url statico con variabili Web Server 0
T problemi con dati menu a tendina HTML e CSS 2
T Query con date MS Access 1
F Url dinamiche da cambiare con categoria, subcategoria e title PHP 2
L Aiuto con DataGridView Visual Basic 1
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
M Aggiunta prodotti nel carrello con lo stesso in e varianti diverse PHP 0
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
N Problema con position absolute e overflow HTML e CSS 4
M Estrarre soltanto i prodotti con stessa descrizione PHP 10
felino [Wordpress] Gallery con foto selezionabili dall'utente WordPress 0
G Invio di più valori con la stessa checkbox PHP 4
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
I Form con selettore HTML e CSS 0
G phpmailer e php 8.1 con estensione mysqli PHP 6
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
N Vendo sito web di casino online con 1000 giochi Compravendita siti e domini 0
G form invio multiplo con checkbox PHP 12
L Query e selezione DB con $_POST PHP 2
K [PHP] Problema con variabili concatenate. PHP 1
R Dubbi su siti sviluppati con Wordpress e con codice WordPress 6
B Router e telecamere con pannello solare IP Cam e Videosorveglianza 0
Z Cerco ecommerce gratuito meglio se realizzato con Woocommerce di Wordpress. E-Commerce 0
S [CERCO] scambio di articoli con link Offerte e Richieste di scambio links 0
A Immagine decentrata con sfondo trasparente Photoshop 0
O problema con query PHP 4
Jensen Errore di sintassi con DELETE PHP 3
D Casella di testo con grassetto ecc... HTML e CSS 2
R Aprire maschera con Openform filtrando un campo testuale con un valore recuperato da un'altra maschera MS Access 10
G Query con i giorni della settimana MySQL 10
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
G Il mio sito dopo aver abilitato l'ssl non visualizza le immagini con indirizzi senza ssl HTML e CSS 0
A Connessione a mdb con php7 PHP 1
P errore 404 con javascript Javascript 2
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0

Discussioni simili