Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    come chiamare una funzione da actionperformed

    Salve, sono alle prime armi con le applet java...

    Ho una classe, al cui interno c'è una

    funzione public void funzione1()

    in cui ci sono dei bottoni a video. Quando premo il bottone start vorrei che venisse chiamata una

    public void funzione2(parametri)

    in cui viene ridisegnata la applet con il niovo contenuto

    Bene il problema è come chiamo funzione2 nella

    public void actionPerformed(ActionEvent e)

    che mi gestisce gli eventi dei bottoni presenti in funzione1 incluso il bottone start????? Se io scrivo a dritto funzione2(parametri) dentro la actionPeformed, quando premo start non succede nulla!

    Grazie per qualsiasi aiuto!

    Riccardo
    Riccardo Daviddi

  2. #2
    forse col codice...

  3. #3

    ecco il codice

    Ecco le parti del codice che non mi funziona, naturalmente start è chiamata dal costruttore della classe:

    public void start()
    {
    Panel

    TitoloP = new Panel(),
    RigColP = new Panel(),
    LivMossaP = new Panel(),
    ConfigP = new Panel(),
    StartP = new Panel();


    ... parte mancante non utile



    // Pannello del bottone GIOCA

    Button Gioca = new Button("Gioca!");
    Gioca.addActionListener(this);
    StartP.add(Gioca);


    // Disposizione sul video

    setLayout(new BorderLayout());
    setBackground(Color.yellow);
    add(TitoloP,"North");
    add(ConfigP,"Center");
    add(StartP,"South");



    }


    //funzione da chiamare quando premo Gioca!
    public void Gioca(int Righe,int Colonne,int Livello,int prima_mossa)
    {

    ... codice da eseguire

    }


    public void actionPerformed(ActionEvent e)
    {
    Button sorg = (Button)(e.getSource()); // variabile di appoggio per testare chi ha chiamato actionPeformed


    ...altre if(su altri bottoni)


    if(sorg.equals(Gioca)){

    Gioca(valore_righe,valore_colonne,8,3);
    }



    }



    Il problema è che se premo sul bottone Gioca! non parte la funzione Gioca

    Che cosa sto sbagliando??
    Riccardo Daviddi

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Mi sembra strano che non funzioni, comunque, se vuoi, esiste un altro modo per fare prima:
    codice:
    Gioca.addActionListener( new ActionListener() {
       public void actionPerformed(ActionEvent ae) {
          Gioca(parametri); // Richiamo la funzione direttamente!
       }
    });
    Questa tecnica fa uso delle classi anonime: non è necessario che ogni bottone sia controlato dallo stesso ActionListener.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357

    Re: ecco il codice

    Originariamente inviato da riccagt
    public void actionPerformed(ActionEvent e)
    {
    Button sorg = (Button)(e.getSource()); // variabile di appoggio per testare chi ha chiamato actionPeformed


    ...altre if(su altri bottoni)


    if(sorg.equals(Gioca)){

    Gioca(valore_righe,valore_colonne,8,3);
    }



    }



    Il problema è che se premo sul bottone Gioca! non parte la funzione Gioca

    Che cosa sto sbagliando??
    l'if che controlla il bottone deve essere un test tra puntatori(reference), quindi
    codice:
    if(sorg == Gioca)......
    inoltre la classe deve implementare ActionListener.

    Un consiglio : dai alle variabili e ai metodi un nome che inizi per lettera minuscola; alle classi un nome che inizi per lettera maiuscola;


  6. #6

    ancora problemi

    xZalex: sì la classe implementa ActionListener e grazie terro' conto del consiglio!

    x LeleFT: ho scritto il codice che mi hai dato ma in compilazione mi da l'errore che le classi anonime del metodo start() devono essere dichiarate abstract, non definisce il metodo ActionPerformed bla bla... cosa devo fare?

    Comunque ragazzi il prob vero è nel fatto che se metto la chiamata a Gioca(parametri) dentro la ActionPerformed sembra che non gliene freghi nulla! Non da errore in comppilazione ma se premo sul bottone non succede niente (sembra che non la esegua!). VAle anche per gli altri bottoni, ho provato ad aggiungere la chiamata alla Gioca(parametri) oltre a quello che già correttamente facevano dentro le loro ActionPerformed e niente!

    Naturalmente la Gioca(parametri) è fatta bene, infatti se io dalla funzione start() chiamo la Gioca(parametri) a video appare la grafica giusta della Gioca(parametri).

    Non so proprio cosa fare...
    Riccardo Daviddi

  7. #7
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    scusa ma hai cambiato il test nell'if?

  8. #8

    certo che ho provato ma niente!

    Certo che ho provato ma come ho scritto nel post sopra anche senza mettere if sui bottoni che hanno chiamato la actionPerformed e scrivendo a dritto

    Gioca(parametri)

    dentro la actionPerformed, non funge uguale! (qualunque bottone io prema dovrebbe far attivare la Gioca(parametri) in questo modo, ma niente!)

    Ripeto: sembra che dalla actionPerformed non sia "raggiungibile" la Gioca(parametri) cosa alquanto assurda perchè è funzione public della stessa classe...

    Non avete altri suggerimenti? E riguardo all'errore sulla classe astratta che mi da (per implementare il metodo propostomi da LeleFT) avete suggerimenti?

    Vi ringrazio di cuore!
    Riccardo Daviddi

  9. #9
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    mi manderesti il codice via mail?
    voglio darci un'occhiata!
    questo fatto mi interessa

  10. #10
    certo non appena torno a casa te lo mando.

    Grazie!
    Riccardo Daviddi

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.