Associare radioButton ad un pulsante

di il
6 risposte

Associare radioButton ad un pulsante

Altro problemino

come faccio ad associare le radioButton Ad Un Pulsante?

mi spiego io ho i miei belli radioButton1 e radioButton2 che fanno parte di un ButtonGroup.

Io li voglio associare al mio bel bottoncino di nome botton1 e quando seleziono uno di queste mie due radioButton il bottone si arma con un'azione diversa.

in poche parole se seleziono il radioButton1 premendo il bottone ho un' azione, mentre se seleziona il radioButton2 premendo lo stesso bottone avrò un'altra azione.

Come posso fare? ho provato più modi ma nessuno ha dato il risultato sperato.

Help please?

6 Risposte

  • Re: Associare radioButton ad un pulsante

    CRTVLB ha scritto:


    in poche parole se seleziono il radioButton1 premendo il bottone ho un' azione, mentre se seleziona il radioButton2 premendo lo stesso bottone avrò un'altra azione.
    Il pulsante può avere sempre un certo ActionListener associato che non cambia mentre invece la scelta di cosa fare è "dentro", nel actionPerformed (se radioButton1 è selezionato fai X, se radioButton2 è selezionato fai Y).

    Oppure si può assegnare al pulsante un diverso ActionListener a seconda del radio button selezionato. Chiaramente addActionListener è "additivo", se c'era registrato il ActionListener per il radioButton1, lo devi rimuovere prima di aggiungere il ActionListener associato al radioButton2 !!
    La cosa più semplice (e ovvia) è quella di tenersi da parte il riferimento all'ultimo ActionListener associato, così lo si può rimuovere facilmente.
  • Re: Associare radioButton ad un pulsante

    Ecco quello che dici in linea teorica credo mi sia chiaro, infatti avevo pensato di usare un if per cambiare l'actionPerformed del tasto. avevo pensato ad un codice tipo questo nel metodo che inizializzare il bottone:
    
    if(rabiobutton1.isSelected()) {
    this.bottoneModifica.setAction((Action) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_MODIFICA));
    }else if(radiobutton2.isSelected()) {
    this.bottoneModifica.setAction((Action) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_MODIFICA_SOLO_DATA));
    }
    
    Ma chiaramente non funziona.

    Potresti spiegarmi in pratica come fare?

    Te ne sarei molto grato.
  • Re: Associare radioButton ad un pulsante

    CRTVLB ha scritto:


    Ma chiaramente non funziona.
    Settare una Action differente sul pulsante con setAction è di per sé corretto. Non è questo il punto.
    Ma .... non so cosa sono (per te, nel tuo codice) quei controllo.getAction(Costanti.BLABLA)
  • Re: Associare radioButton ad un pulsante

    Ti spiego, ogni azione viene definita in una classe chiamata costanti, nel caso specifico di AzioneVisualizzaFinestraModifica e AzioneVisualizzaFinestraModificaSoloData in questo modo:
    
    public static final String AZIONE_VISUALIZZA_FINESTRA_MODIFICA = AzioneVisualizzaFinestraModifica.class.getName();
    
        public static final String AZIONE_VISUALIZZA_FINESTRA_MODIFICA_SOLO_DATA = AzioneVisualizzoFinestraModificaSoloData.class.getName();
    

    ogni azione estende AbstractAction ed ha una sua ActionPerformed

    Nella form per associare l'azione al suo componente uso un metodo inizializzaAzioni()

    il codice per associare l'azione giusto al componente giusto è il seguente(mettiamo che io abbia due bottoni, uno per modifica e una per modificaSoloData:
    
    this.bottoneModifica.setAction((Action) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_MODIFICA));
    
    this.bottoneModificaSoloData.setAction((Action) this.controllo.getAction(Costanti.AZIONE_VISUALIZZA_FINESTRA_MODIFICA_SOLO_DATA));
    
    Spero di essere stato chiaro.

    Ti chiedo una cosa il mio if precedente in teoria sintatticamente è corretto, cosa sbaglio? Per caso c'entra il fatto che i bue radiobotton fanno parte di un radioGroup?
  • Re: Associare radioButton ad un pulsante

    CRTVLB ha scritto:


    
    public static final String AZIONE_VISUALIZZA_FINESTRA_MODIFICA = AzioneVisualizzaFinestraModifica.class.getName();
    
        public static final String AZIONE_VISUALIZZA_FINESTRA_MODIFICA_SOLO_DATA = AzioneVisualizzoFinestraModificaSoloData.class.getName();
    
    Queste tue costanti contengono il nome qualificato della classe della action (non es. il NAME interno della action!)

    Se il tuo controllo.getAction() prende il nome della classe e fa in modo da ottenerne una istanza, allora è corretto (perlomeno tecnicamente ... io però non farei certo così). Altrimenti se non è così ... semplicemente è sbagliato.

    Scusa ma non ho la sfera di cristallo ....
  • Re: Associare radioButton ad un pulsante

    Si il mio getAction fa esattamente quello.

    Mi dici come lo faresti tu? io ho sempre fatto così ed ha sempre funzionato bene tutto.
Devi accedere o registrarti per scrivere nel forum
6 risposte