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

    radioButton click quando è gia selezionato

    salve
    uso netbeans e succede che cliccando con il mouse su un radioButton gia selezionato l'evento
    codice:
       public void actionPerformed(ActionEvent e) {
    si verifica comunque

    qualcuno sa come ovviare ??? ad esempio come uscire dalla funzione se il rb era selezionato

    ps la propieta .isSelected() viene aggiornata prima che il flusso entri nel void actionPerformed()

    ciao
    biagiopas
    semplicità ... al sol nominarla sembra svanire

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

    Re: radioButton click quando è gia selezionato

    Originariamente inviato da biagiopas
    succede che cliccando con il mouse su un radioButton gia selezionato l'evento
    codice:
       public void actionPerformed(ActionEvent e) {
    si verifica comunque

    qualcuno sa come ovviare ???
    Con JRadioButton si possono usare 3 listener per ottenere una notifica sulla selezione: ActionListener, ChangeListener e ItemListener.
    Se i radio button sono contenuti in un ButtonGroup (per avere la "mutua" esclusione), allora l'unica notifica che non si continua a ricevere se è già selezionato è con ItemListener.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ciao andbin
    grazie per la risposta

    ho provato a cambiare listner ma ancora non ci sono riuscito

    questo è il vecchio codice che usa l' ActionListner

    codice:
    	//creazione dei componenti
        private JToggleButton radioNeroOkTurno = new JToggleButton("N");
        private JToggleButton radioBiancoOkTurno = new JToggleButton("B");
    
        //creazione dell'ascoltatore e assegnazione ai componenti
        ActionListener listenerRadioB = new JRadioButtonListener();
        radioNeroOkTurno.addActionListener(listenerRadioB);
        radioBiancoOkTurno.addActionListener(listenerRadioB);
    
    
    //classe che intercetta l'evento
      class JRadioButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
    ....
    	}
    }

    ho provato con il seguente codice ma contiene diversi errori
    codice:
        ItemListener listenerRadioB = new JRadioButtonListener();
        radioNeroOkTurno.addItemListener(listenerRadioB);
      class JRadioButtonListener implements ItemListener {
        public void actionPerformed(ItemEvent e) {

    heeeeelp
    ciao biagiopas

    ps i componenti sono JToggleButton e non JRadioButton ma non credo faccia differenza no??
    semplicità ... al sol nominarla sembra svanire

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da biagiopas
    ho provato con il seguente codice ma contiene diversi errori
    codice:
        ItemListener listenerRadioB = new JRadioButtonListener();
        radioNeroOkTurno.addItemListener(listenerRadioB);
      class JRadioButtonListener implements ItemListener {
        public void actionPerformed(ItemEvent e) {
    No, guarda bene la documentazione: ItemListener è ben diverso da ActionListener. Per ItemListener il metodo è itemStateChanged e riceve un oggetto ItemEvent.

    Originariamente inviato da biagiopas
    ps i componenti sono JToggleButton e non JRadioButton ma non credo faccia differenza no??
    Beh no, non fa molta differenza. Ma ripeto che se i toggle button sono in un ButtonGroup (cioè sono in mutua esclusione), allora sì, un ItemEvent non viene più inviato se il toggle button è già selezionato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ok andbin grazie ancora adesso funziona anche l' ItemListener
    si doveva cambiare l'evento con quello che mi hai suggerito
    ... la documentazione java non la so ancora consultare VVoVe:
    riporto il codice completo per usare l' ItemListener

    codice:
     // creazione dei componenti  (JToggleButton o in alternativa JRadioButton)
        private JToggleButton radioNeroOkTurno = new JToggleButton( "N");
        private JToggleButton radioBiancoOkTurno = new JToggleButton("B");
    
       // Crea il ButtonGroup e registra i RadioButton 
        ButtonGroup group = new ButtonGroup();
        group.add(radioNeroOkTurno);
        group.add(radioBiancoOkTurno);
    
        //creazione dell'ascoltatore e assegnazione ai componenti
        ItemListener listenerRadioB = new JRadioButtonListener();
        radioNeroOkTurno.addItemListener(listenerRadioB);
        radioBiancoOkTurno.addItemListener(listenerRadioB);
    
      //classe che intercetta l'evento
      class JRadioButtonListener implements ItemListener {
        public void itemStateChanged(ItemEvent e) {
        ...
        }
      }
    semplicità ... al sol nominarla sembra svanire

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da biagiopas
    adesso funziona anche l' ItemListener
    Devi ovviamente interrogare l'oggetto ItemEvent per sapere cosa è successo: getStateChange() ti ritorna ItemEvent.SELECTED o ItemEvent.DESELECTED. E getSource() (ma anche getItem() in questo caso) ti ritorna il reference al componente interessato (lo puoi confrontare usando == con i tuoi radioNeroOkTurno e radioBiancoOkTurno).

    Quando selezioni uno dei due, prima ricevi notifica con DESELECTED di quello che è stato deselezionato e poi ricevi notifica con SELECTED di quello che hai appena selezionato.
    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.