Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178

    Problema con i JRadioButton

    Salve,

    Sto implementando un programma che permette di depositare/prelevare soldi da un conto bancario. Il programma ha un JTextField, unJButton e due JRadioButton. L'utente che vuole prelevare il denaro seleziona il JRadioButton per attivare la modalità "preleva", inserisce la somma da prelevare nel JTextField e preme il pulsante per chiudere l'operazione. Ovviamente la stessa cosa succede con il deposito.

    Quando seleziono uno dei due JRadioButton il programma funziona senza problemi, il problema si verifica quando successivamente seleziono una'altro JRadioButton(dopo aver selezionato uno dei due). In questo caso quando premo il pulsante non avviene nulla.

    Mi potete aiutare :-). Grazie.

    codice:
    public void vediamo()
        {
            class RadioButtonActionListener implements ActionListener
            {
            public void actionPerformed(ActionEvent event) 
            {
                JRadioButton radio = (JRadioButton) event.getSource();
                if(radio == radio1)
                {
                    operazione1();
                }
                else if(radio == radio2)
                {
                    operazione2();
                }
            }
            }
            
        ActionListener azione = new RadioButtonActionListener();
        radio1.addActionListener(azione);
        radio2.addActionListener(azione);

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Stranamente funziona se clicco due volte sul JRadioButton.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    Sto implementando un programma che permette di depositare/prelevare soldi da un conto bancario. Il programma ha un JTextField, unJButton e due JRadioButton. L'utente che vuole prelevare il denaro seleziona il JRadioButton per attivare la modalità "preleva", inserisce la somma da prelevare nel JTextField e preme il pulsante per chiudere l'operazione. Ovviamente la stessa cosa succede con il deposito.

    Quando seleziono uno dei due JRadioButton il programma funziona senza problemi, il problema si verifica quando successivamente seleziono una'altro JRadioButton(dopo aver selezionato uno dei due). In questo caso quando premo il pulsante non avviene nulla.
    Dalla descrizione del flusso di operazioni che hai fatto sopra, mi sembra di capire che la "azione" finale per eseguire effettivamente il deposito/prelievo è scatenata dal pulsante JButton ... non dai JRadioButton. Pertanto sarebbe più logico non fare nulla alla selezione del JRadioButton e poi quando si preme il JButton andare a vedere quale JRadioButton è selezionato. Se è deposito fai il deposito ecc...

    L'utente poi potrebbe essere indeciso, potrebbe cliccare più volte, cambiando anche scelta, sui radio button. Raramente ha senso compiere quella certa operazione finale solo a seguito del click sui radio button.


    P.S. Non so se hai copiato male qui nel post ma la classe RadioButtonActionListener risulta dentro un metodo.
    Le method-local inner-class vengono usate ultra-raramente, qui cerca di evitarle. Oltretutto danno un codice un po' più contorto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    codice:
    Dalla descrizione del flusso di operazioni che hai fatto sopra, mi sembra di capire che la "azione" finale per eseguire effettivamente il deposito/prelievo è scatenata dal pulsante JButton ... non dai JRadioButton
    Sono due metodi: Operazione1 e Operazione2. All'interno dei due metodi vi è implementato un ActionListener su un JButton. Il comportamento del pulsante cambia a seconda della modalità che si sceglie: deposita avviene in Operazione1, preleva in Operazione2.
    I JRadioButton scelgono quali delle due operazioni far eseguire.

    codice:
    P.S. Non so se hai copiato male qui nel post ma la classe RadioButtonActionListener risulta dentro un metodo.
    Le method-local inner-class vengono usate ultra-raramente, qui cerca di evitarle. Oltretutto danno un codice un po' più contorto.
    Si, è all'interno del metodo.

    Il programma funziona, ma stranamente devo cliccare due volte sui JRadioButton per cambiare modalità. E' normale?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Magnifico!!! Ho cambiato il programma come hai consigliato tu e va BENISSIMO!! GRAZIE AndBin!!

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.