Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    JCheckBox gestire Evento

    Salve ragazzi..vorrei sapere come gestire un JRadioButton oppure un JCheckBox..
    Con un ActionListener oppure un ChangeListener?

    Nel mio specifico vorrei che se viene ceccato il primo JCheckBox si deselezionassero tutti gli altri 5..
    Mentre se vengono ceccati gli altri JcheckBox...il primo, se è selezionato lo si deseleziona.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: JCheckBox gestire Evento

    Originariamente inviato da reginaldo
    Salve ragazzi..vorrei sapere come gestire un JRadioButton oppure un JCheckBox..
    Con un ActionListener oppure un ChangeListener?
    Per qualunque componente che discende da AbstractButton si possono usare 3 listener per ascoltare i cambiamenti: ActionListener, ChangeListener o ItemListener. Il significato degli eventi e la "granularità" delle informazioni fornite dai 3 listener ovviamente è diverso. Il più semplice è ActionListener.

    Originariamente inviato da reginaldo
    Nel mio specifico vorrei che se viene ceccato il primo JCheckBox si deselezionassero tutti gli altri 5..
    Mentre se vengono ceccati gli altri JcheckBox...il primo, se è selezionato lo si deseleziona.
    Generalmente la gestione di una "esclusione multipla" la si usa tipicamente solo con i componenti JRadioButton/JRadioButtonMenuItem/JToggleButton. Ma nulla vieta di farla anche con JCheckBox/JCheckBoxMenuItem. La esclusione multipla non è intrinseca dei 5 componenti citati ... ma è basata sul fatto di mettere i componenti anche in un ButtonGroup (che gestisce "dietro le quinte" la esclusione multipla).

    Nel tuo caso ButtonGroup però non serve ... la tua è una mutua esclusione più particolare e specifica: 1 checkbox in esclusione multipla contro 5 checkbox. L'unica cosa che non mi è chiara è se il primo deve essere deselezionato se gli altri 5 sono tutti selezionati oppure se almeno uno dei cinque è selezionato. Immagino (e avrebbe più senso) la seconda opzione.

    Puoi usare ActionListener.

    actionPerformed() per checkBox 1: se è selezionato, allora setSelected(false) invocato sui checkbox 2...6.
    actionPerformed() per checkbox 2...6: se è selezionato, setSelected(false) sul checkbox 1
    Tutto qui.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    allora hai capito perfettamente il problema..il fatto è che io faccio un actionperformed unico (implemento la classe con ActionListener e implemento il metodo)...succede questo..
    faccio l'IF..se il primo è selezionato deselezionati tutti..e sino a qui ci siamo.

    Ora vorrei che se nonostante il primo fosse selezionato quando io clicco su un checkBox mi deselezionasse il primo e mi permettesse il selezionamento dello stesso e degli altri..
    ma questo nn riesco a farlo..perchè mi fa in conflitto con il primo if che dice che se il primo checkBox è selezionato non selezionare gli altri...

    Hai capito più o meno???

    Io ho trovato un specie di escamotage..ho fatto in modo che il selezionamento degli altri checkBox è permesso solo se l'utente deseleziona il primo checkbox...
    Certo non è una cosa così immediata però è stata l'unica soluzione che ho trovato..

    Accetto volentieri tuoi consigli!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da reginaldo
    ma questo nn riesco a farlo..perchè mi fa in conflitto con il primo if che dice che se il primo checkBox è selezionato non selezionare gli altri...
    Ammettiamo di avere 6 variabili di "istanza" checkBox1 .... checkBox6.

    Salvo miei errori di battitura (non l'ho provato), questo deve funzionare:

    codice:
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
    
        if (source == checkBox1) {
            if (checkBox1.isSelected()) {
                checkBox2.setSelected(false);
                checkBox3.setSelected(false);
                checkBox4.setSelected(false);
                checkBox5.setSelected(false);
                checkBox6.setSelected(false);
            }
        } else if (source == checkBox2 || source == checkBox3 ||
                   source == checkBox4 || source == checkBox5 ||
                   source == checkBox6) {
            JCheckBox cb = (JCheckBox) source;
    
            if (cb.isSelected()) {
                checkBox1.setSelected(false);
            }
        }
    }
    Fa esattamente quanto ho descritto "a parole" nella risposta precedente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.