Semplice gui problema variabile

di il
2 risposte

Semplice gui problema variabile

Salve ragazzi, ho realizzato una semplice gui. Alla pressione del bottone aumenta viene visualizzato un contatore nella JTextField aumentato di 1, mentre alla pressione del bottone diminuisci il contatore viene decrementato di 1.
Quello che succede è che tutte le volte che premo uno dei due bottoni il contatore parte da 0.
Mi spiego con un esempio. Se premo il bottone aumenta per supponiamo dieci volte e poi premo il bottone diminuisci esso visualizza -1 mentre io vorrei che visualizzasse 9.
Ho realizzato la classe listener separatamente.
Come posso risolvere?
Qui le classi
public class AscoltaBottone implements ActionListener {
    private JTextField tf;
    private int conta;
    
    public AscoltaBottone(JTextField tf){
        this.tf=tf;
        this.conta=0;
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        
        if(e.getActionCommand().equals("aumenta"))
            this.conta++;
        
        if(e.getActionCommand().equals("diminuisci"))
             this.conta--;
        
        tf.setText(""+conta);
    }
 
}
public class FinestraBottoneExt {

  
    public static void main(String[] args) {
        // TODO code application logic here
        JFrame f=new JFrame("Gui");
        JPanel p=new JPanel();
        JButton b1=new JButton("aumenta");
        JButton b2=new JButton("diminuisci");
        JTextField tf=new JTextField(10);
        p.add(b1);
        p.add(tf);
        p.add(b2);
        b1.addActionListener(new AscoltaBottone(tf));
        b2.addActionListener(new AscoltaBottone(tf));
        f.setContentPane(p);
        f.setSize(500,100);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                
    }
    
}

2 Risposte

  • Re: Semplice gui problema variabile

    reynold ha scritto:


    b1.addActionListener(new AscoltaBottone(tf));
    b2.addActionListener(new AscoltaBottone(tf));
    Il problema è che hai creato 2 oggetti AscoltaBottone, perché hai eseguito 2

    new AscoltaBottone(tf)

    E ciascuna istanza ha il SUO proprio int conta.

    Soluzione: usa una sola istanza.
  • Re: Semplice gui problema variabile

    Risolto grazie ho fatto cosi
    
    AscoltaBottone ab=new AcoltaBottone(tf);
    b1.addActionListener(ab);
    b2.addActionListener(ab);
    
Devi accedere o registrarti per scrivere nel forum
2 risposte