Perche cambiano di colore tutti i bottoni?

di il
7 risposte

Perche cambiano di colore tutti i bottoni?

Ciao,ho creato questo programma in cui devo premere u bottone e farlo diventare di colore rosso,ma non capisco perchè tutti i bottoni cambiano colore e non solo quello premuto.
Dove sto sbagliando? mi correggete il programma?Grazie!!

----------------------------------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class senzanome extends JFrame implements ActionListener {
JPanel p = new JPanel();
JButton[] b = new JButton[100];
public senzanome(){
for(int i=0;i<100;i++){
b= new JButton();
p.add(b);
b.setActionCommand("i+1");
b.setPreferredSize(new Dimension(50,50));
b.addActionListener(this);
}

this.getContentPane().add(p);
}
public void actionPerformed(ActionEvent e){
String a = e.getActionCommand();
for(int i=0;i<100;i++){
if(a.equals("i+1"))
b.setBackground(Color.red);
}
}
}

7 Risposte

  • Re: Perche cambiano di colore tutti i bottoni?

    Lako12 ha scritto:


    non capisco perchè tutti i bottoni cambiano colore e non solo quello premuto.
    Hai usato per l'action command una stringa fissa "i+1". Se volevi avere stringhe "1", "2", ecc.. non è così che va fatto.

    Semplicemente:

    ""+(i+1)

    o in alternativa

    String.valueOf(i+1)

    E comunque non ha molto senso rifare il loop nel actionPerformed. Dal ActionEvent puoi avere il riferimento al pulsante cliccato.
  • Re: Perche cambiano di colore tutti i bottoni?

    andbin ha scritto:


    Lako12 ha scritto:


    non capisco perchè tutti i bottoni cambiano colore e non solo quello premuto.

    E comunque non ha molto senso rifare il loop nel actionPerformed. Dal ActionEvent puoi avere il riferimento al pulsante cliccato.
    In che senso? Mi spieghi meglio ? Grazie
  • Re: Perche cambiano di colore tutti i bottoni?

    Lako12 ha scritto:


    In che senso? Mi spieghi meglio ? Grazie
    public void actionPerformed(ActionEvent e) {
        JButton pulsanteAzionato = (JButton) e.getSource();
        // ........
    }
  • Re: Perche cambiano di colore tutti i bottoni?

    Ah ho capito, grazie mille!
  • Re: Perche cambiano di colore tutti i bottoni?

    @andbin mi è venuto un altro dubbio, se faccio come hai detto tu ovvero : JButton pulsanteAzionato = (JButton) e.getSource();
    Se ho più oggetti per esempio un JRadioButton ed un bottone come devo fare?
  • Re: Perche cambiano di colore tutti i bottoni?

    Lako12 ha scritto:


    Se ho più oggetti per esempio un JRadioButton ed un bottone come devo fare?
    Se hai 1 solo ActionListener devi per forza distinguere il "source" dell'evento.
    Se hai pulsanti/radiobutton specifici di cui hai tenuto il riferimento in variabili di istanza, ti basta fare il confronto dei reference dato da getSource() con == .

    Ma comunque non sei obbligato ad avere 1 solo ActionListener. Puoi averne di più, come inner-class di tipo regular o anonymous.
  • Re: Perche cambiano di colore tutti i bottoni?

    Ah va bene , grazie di tutto
Devi accedere o registrarti per scrivere nel forum
7 risposte