Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26

Discussione: Actionlistener in java

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    Actionlistener in java

    Supponiamo che abbia da premere un bottone a cui è associato un action listener

    JButton bottone = new JButton("Cliccami!!!");
    bottone.addActionListener(this);

    "this" Significa che il codice che si occupa di gestire gli eventi sarà scritto all'interno della stessa classe in cui si trova il mio bottone

    supponiamo invece che il codice che si occupa di gestire gli eventi sia scritto in un'altra classe Pippo, in questo caso al posto di this cosa ci metto?

    thx

  2. #2

  3. #3
    Io direi (per essere precisi) un'istanza di Pippo (i metodi degli ActionListener non sono statici). Quindi una cosa del tipo
    codice:
    JButton bottone = new JButton("Cliccami!!!"); 
    bottone.addActionListener(new Pippo());
    oppure
    codice:
    Pippo p = new Pippo();
    JButton bottone1 = new JButton("Cliccami!!!"); 
    bottone1.addActionListener(p);
    JButton bottone2 = new JButton("Cliccami!!!"); 
    bottone2.addActionListener(p);

    Hola!
    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    la tua soluzione è incompleta perchè nella classe pippo c'è un codice simile a questo

    public void actionPerformed(ActionEvent event){

    Object source = event.getSource();

    se scrivo come dici te e stampo a video source, il campo text che dovrebbe contenere il nome del bottone cliccato risulta vuota

  5. #5

    Classi e Interfacce

    Ciao,
    come è noto gli ascoltatori sono interfacce quindi non posseggono le implementazione ai propi metodi, quello che ha scritto lucis è perfettamente funzionante; per ottenere quello che vuoi tu devi implementare l 'ascoltatore:

    public class pippo implements ActionListener{

    //metodi implementati come vuoi te

    }

    ciao
    Powered by MacOSX Lion

  6. #6

    ops

    Forse ho capito cosa intendi... tu vuoi variare la scritta sul bottone... allora ti devi creare una variabile di istanza Bottone all'interno di pippo e quando registri l' ascoltatore devi passargli il tuo bottone:

    b.addActionListener(new Pippo(b))

    ----------------------------------------------------------------------

    all' interno di pippo:

    public class pippo...............{
    public button bottone;
    public pippo(button b){
    bottone = b;
    }
    //tuoi metodi implementati
    }

    ----------------------------------------------------------------------

    Così dovrebbe fare ciò che vuoi te...

    Ciao!
    Powered by MacOSX Lion

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    così funziona thx


    una curiosità
    La tua prima soluzione era di mettere

    bottoneA.addActionListener(new Pippo)

    bottoneB.addActionListener(new Pippo)

    Nella classe pippo poi c'era l'azione relativa al bottoneA e l'azione relativa al bottoneB

    Con la soluzione:

    bottoneA.addActionListener(new Pippo)

    bottoneB.addActionListener(new Pippo)

    la classe pippo come faceva a sapere quale mottone era stato cliccato? (e quindi come faceva a sapere quale azione eseguire?)

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("action button a"))
    ...
    else if (e.getActionCommand().equals("action button b"))
    ...
    }

  9. #9

    Quale Tasto...

    Ciao,
    Concordo con floyd...
    Powered by MacOSX Lion

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    ok thx to all
    stasera provo il codice di floyd

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.