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

Discussione: [JAVA]Eventi

  1. #1

    [JAVA]Eventi

    Ciao a tutti-.--

    Di java sono nuovo... :gren:

    Allora voglio usare dei gestori di evento...

    Voglio che quando clicco il mio form mi venga aggiunto un bottone

    Io inizialmente ho già creato il bottone...

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

    Button bu = new Button();

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

    e non gli ho detto di rendersi visible...


    quindi nel form ho messo....

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

    this.addonclick(bu);

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

    sperando che mi aggiungesse questo controllo invece mi da errore....

    Come potrei fare? grazie a tutti ciao ciao!!
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Devi aggiungere al tuo Form un MouseListener.
    codice:
    public class MioForm extends Frame {
       public MioForm() { // costruttore
          addMouseListener( new MouseAdapter() {
             public void mouseClicked(MouseEvent me) {
                aggiungiPulsante();
             }
          });
       }
    
       private void aggiungiPulsante() {
          add(bu);
          doLayout() // per far sì che il form si ridisegni.
       }
    }
    Questo dovrebbe essere sufficiente allo scopo, ma non sarà sicuramente chiaro per capire cosa è stato fatto e perchè.

    Cominciamo col dire che quando si ha a che fare con gli eventi, bisogna aggiungere al controllo incaricato di riceverlo, un Listener appropriato. I Listener sono delle interfacce che mettono a disposizione i metodi adatti a ricevere gli eventi. Siccome le interfacce mettono a disposizione molti metodi (ad esempio, MouseListener mette a disposizione 6 metodi) essi devono essere implementati TUTTI. Per ovviare a questo sono state preconfezionate delle classi che implementano già tutti i metodi vuoti, permettendo, quindi, di poterli sottoporre ad override. Queste classi sono gli Adapter. (So che il discorso sembra alquanto oscuro, ma ci vorrebbe una trattazione solo su questo genere di classi).

    Un metodo alternativo consiste nel far implementare all'oggetto stesso, l'interfaccia che serve allo scopo. In questo caso avrei potuto far implementare al Frame l'interfaccia MouseListener. Questo è un modo che ha Java per ovviare all'assenza di ereditarietà multipla e produce come effetto il fatto che il Frame sarebbe diventato un oggetto di tipo MouseListener. Detto questo, è chiaro che avrei, di conseguenza, potuto aggiungere come Listener il frame stesso ( addMouseListener(this) ). Avrei, però, dovuto implementare tutti i metodi, anche quelli che non mi interessano (implementandoli vuoti).

    Spero che l'uso che ho fatto della classe anonima non sia di troppo disturbo o troppo oscura... se così fosse puoi sempre chiedere informazioni, sarò lieto di spiegarti ulteriormente la cosa. Per ora credo che sia sufficiente quanto detto.


    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

  3. #3
    Grazie ho capito!!

    In pratica usando questi Listener sarebbe come dire...
    "stai in ascolto di eventi"

    In questo modo il programma diventa abilitato a percepire gli eventi che possono così essere utilizzati.

    Però ho un piccolo problema.

    Il compilatore mi dice che addMouseListener non è definito.

    Probabilmente non ho importato qualche libreria.

    Mi diche quale libreria devo importare?

    Grazie ciao ciao!!!
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;

  5. #5
    asso...
    ho già importato la com.ms.wfc.ui e se importo la java.awt
    mi da nome ambiguo perche presente in entrambe le librerie

    ...
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da I'mtheleader
    asso...
    ho già importato la com.ms.wfc.ui e se importo la java.awt
    mi da nome ambiguo perche presente in entrambe le librerie

    ...
    Dipende da ciò che usi, ma maagari java.wat non ti serve, vedi se compila senza problemi. Se ti dovessi servire per alcune classi, invece di importare java.awt, puoi far riferimento alle classi definite in quel package usando il nome del package stesso, esempio:

    java.awt.NomeClasse a = new java.awt.NomeClasse();

  7. #7
    è sorto un altro problema.

    Io la javax non ce l'ho.

    Se avvio la compilazione mi da sempre l'errore del nome "addMouseListener" non dichiarato...

    come posso fare?
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Ma che classe usi? Io mi riferivo a Frame di AWT. il metodo addMouseListener è definito per tutti i Component.

    Per poter, invece, utilizzare la classe MouseEvent (necessaria nel Listener) devi importare java.awt.event.*


    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

  9. #9
    Io nel mio progetto ho un Form.

    cmq io ho inseriro la java.awt.*; e comunque mi dice che sto benedetto addMouseListener è un nome non definito!!

    Vi prego una mano!!

    ciao a tutti!!
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Non capisco... cosa intendi per Form? Hai una classe che estende Frame? Oppure una classe che estende JFrame? Immagino nessuna delle due, perchè entrambe ereditano da Component, quindi entrambe hanno il metodo addMouseListener. Dovresti postare un po' del tuo codice.

    Non è che si tratta di JSP? Siccome non conosco JSP, potrebbe darsi che si tratti di qualche classe che non ha nulla a che vedere con le AWT e/o le Swing...

    Se il problema fosse un'altro, controlla che il metodo addWindowListener lo devi applicare ad un Component (quindi Frame o JFrame o qualcos'altro): se tu hai un progetto composto da un main che crea ed avvia un Frame in questo modo...
    codice:
    public static void main(String [] args) {
       Frame f = new Frame();
       ...
       f.show();
    }
    ...allora devi usare questa sintassi:
    codice:
       f.addMouseListener(...);
    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

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.