Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [JAVA] ActionListener

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894

    [JAVA] ActionListener

    Come faccio a mettere la classe che implementa l'ActionListener di un bottone fuori dalla classe principale e a passargli dei parametri???

    Se per esempio ho un bottone e un'etichetta nella classe Pricipale

    Poi al bottone aggiungo l'ActioListener.

    Quindi creo un'altra classe che implementa l'ActionListener in cui quando clicco deve cambiare il testo all'etichetta.

    Ecco non mi va!!!

    Mi va solo se la classe che implementa l'ActionListener la inserisco all'interno della classe principale, ma così non mi piace!!!

    Help me!!! :sgrat:

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    48

    Ciao

    Crei una classe che estende il l' ascoltatore originario
    ed associ una sua istanza al componente che ti interessa
    col metodo addActionListener(nomeclasseascoltatore).
    Chiaro ?
    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    48

    Scusa non avevo letto bene...

    Riporta il codice che gli do un' occhiata, cosa intendi per ..."Passare dei parametri ??? " ad un ascoltatore di solito non passi dei parametri ... si limita ad.... ASCOLTARE

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    import java.awt.event.*:
    import java.awt.*;

    class Prova extends Frame
    {
    Label label = new Label("Ciao");
    Button button = new Button("Clicca");

    public static void main(String args[])
    {
    new Prova();
    }

    public Prova()
    {
    super("titolo");

    add(label);
    add(button);

    button.addActionListener(new Click());

    pack();
    show();
    }

    public class Click implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {
    label.setText("Hai Cliccato!");
    }
    }
    }

    :quote:

    Così funziona ma l'ActionListener è interno alla classe Prova!

    Io lo voglio in un classe a parte!!!!!

  5. #5
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    nella classe Prova

    ActionListener bottoneListener = new BottoneListener();
    bottone.addActionListener(bottoneListener);
    -----



    class BottoneListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {

    label.setText("Hai Cliccato!");

    }
    }
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Non va!!! nella classe "BottoneListener" non conosce l'oggetto "label"!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Cioè io voglio mettere la classe BottoneListener fuori dalla classe Prova:

    Prova.java
    BottoneListener.java

    In questo modo nella classe BottoneListener non puoi chiamare label.setText perche non sa cos'è "label". Infatti BottoneListener non "estende" Prova ma lo "implementa"!

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    up :quote:

  9. #9
    Non lo implementa perchè la classe click non "vede" l' oggetto label che sta nella classe Prova, quindi devi fare in modo che la classe click veda la classe Prova e da questa accedere all' oggetto label:

    import java.awt.event.*:
    import java.awt.*;

    class Prova extends Frame
    {
    Label label = new Label("Ciao");
    Button button = new Button("Clicca");

    public static void main(String args[])
    {
    new Prova();
    }

    public Prova()
    {
    super("titolo");

    add(label);
    add(button);

    button.addActionListener(new Click(this));

    pack();
    show();
    }

    public class Click implements ActionListener
    {
    Prova P;

    public Click(Prova parametro)
    {
    P=parametro;
    }

    public void actionPerformed(ActionEvent e)
    {
    P.label.setText("hai cliccato");
    }
    }
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Thank You!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.