Eventi Bottone

di il
7 risposte

Eventi Bottone

Ciao..
Sto cercando un metodo che mi permetta di modifica gli eventi del mouse.
La mia classe, eredita JFrame ed implementa l'intefaccia MouseListener()

.Il mio pulsante di DEFAULT è giallo
.con L' 'EVENTO mousePressed(), cliccandoci diventa e resta Arancione-

Però tra i due "passaggi" succede che proprio nel momento che clicchi, il pulsante assume un terzo colore, che credo faccia parte della selezione, come se il tasto cliccato venga prima evidenziato .
Non so se si capisce cosa intendo..

7 Risposte

  • Re: Eventi Bottone

    Alexxandro ha scritto:


    La mia classe, eredita JFrame ed implementa l'intefaccia MouseListener()

    .Il mio pulsante di DEFAULT è giallo
    .con L' 'EVENTO mousePressed(), cliccandoci diventa e resta Arancione-
    Premessa: MouseListener è per gli eventi del mouse a "basso livello" e sui pulsanti serve molto raramente. Vuoi solo gestire la "azione" sul pulsante? Allora ti basta ActionListener.

    Alexxandro ha scritto:


    Però tra i due "passaggi" succede che proprio nel momento che clicchi, il pulsante assume un terzo colore, che credo faccia parte della selezione, come se il tasto cliccato venga prima evidenziato .
    Sì è lo stato di "pressed" ma .. è un problema questa evidenziazione? È solo temporanea.
  • Re: Eventi Bottone

    Si è temporanea..
    praticamente finche il tasto resta premuto.
    Credo sia una di quelle cose che ha a che fare con il set di configurazione dei colori del SO.
    Io vorrei cambiare quel colore...

    Uso MouseListener, perchè voglio cambiare lo stato del colore
    Stato iniziale,
    Cambio stato al passaggio del mouse
    Cambio stato nel momento del click finchè il tasto è premuto
    Stato finale mousePressed():
  • Re: Eventi Bottone

    Alexxandro ha scritto:


    Si è temporanea..
    praticamente finche il tasto resta premuto.
    Credo sia una di quelle cose che ha a che fare con il set di configurazione dei colori del SO.
    No, non dipende dal SO ma dal Look&Feel impostato in Swing.

    Alexxandro ha scritto:


    Io vorrei cambiare quel colore...
    L'aspetto dei componenti dipende dal L&F. Quello predefinito (se nessuno imposta qualcosa di specifico) è il "Metal".

    Alexxandro ha scritto:


    Uso MouseListener, perchè voglio cambiare lo stato del colore
    Stato iniziale,
    Cambio stato al passaggio del mouse
    Cambio stato nel momento del click finchè il tasto è premuto
    Stato finale mousePressed():
    Ti stai addentrando in un campo abbastanza minato ....
  • Re: Eventi Bottone

    Ciao...
    Ieri ho scritto ma devo aver dimanticato di cliccare su invia...

    Volevo chiederti cosa posso utilizzare in sostituzione a MouseListener, per colorare i vari stati del JButton
    Tra le function JButton, non mi sembra esserci niente del genere, per poter fare quanto detto:

    Stato iniziale,
    Cambio stato al passaggio del mouse
    Cambio stato nel momento del click finchè il tasto è premuto
    Stato finale mousePressed():
  • Re: Eventi Bottone

    Alexxandro ha scritto:


    Volevo chiederti cosa posso utilizzare in sostituzione a MouseListener, per colorare i vari stati del JButton
    Tra le function JButton, non mi sembra esserci niente del genere, per poter fare quanto detto:
    Innanzitutto dovresti cercare di leggere "meglio" la documentazione javadoc. Se tra i metodi di una classe non vedi subito qualcosa di utile/interessante ... guarda nelle super-classi!

    La classe base di tutti i pulsanti è javax.swing.AbstractButton. Essa ha molti metodi e proprietà. Una cosa fondamentale dei pulsanti (tutti i tipi, anche es. i checkbox): ad ogni pulsante è associato un "model" (ButtonModel, vedi get/setModel in AbstractButton).
    Il ButtonModel è il modello "logico" del pulsante e gestisce i vari stati in cui si può trovare (vedi isArmed(), isEnabled(), ecc...). Il ButtonModel gestisce diversi listener, tra cui un ChangeListener. Questo permette di "ascoltare" il cambiamento anche minimo dello stato del pulsante. ChangeListener NON ti dice esattamente cosa è cambiato, ti dice solo che "qualcosa" è cambiato. E cosa lo scopri appunto con il ButtonModel.

    E nota che AbstractButton ha gli stessi addXyzListener del ButtonModel. Di fatto i concetti espressi sono gli stessi. Solo che il pulsante "ascolta" gli eventi del model e ne genera altrettanti per i suoi listener registrati. Quindi se registri un listener sul pulsante, il "source" dell'evento è il pulsante. Se lo registri sul model, il source è il model (non il pulsante).

    Le sapevi queste cose? Se no, vuol dire che devi andare un po' a fondo su questi aspetti. Quindi, consiglio: dimentica un pochino i colori e cerca di comprendere meglio come funzionano queste cose. Registra un ChangeListener e poi ad ogni evento stampa i flag degli stati, così inizi a capire come funzionano.

    Poi potrai riprovare con i colori ... solo che ti dico subito che andrai a scontrarti con quello che fanno in modo predefinito i Look&Feel.
  • Re: Eventi Bottone

    Non le sapevo...
    Il libro che ho comprato è stato quasi inutile 800 pagine ed ho imparato pochissomo, tanti argomenti li conoscevo.
    Cmq si l'ho notato anche io che devo guardare meglio diversi argomenti..,
    Ci vorrebbe un libro che tratta un livello avanzato di java.

    Ok..
    Grazie
  • Re: Eventi Bottone

    Alexxandro ha scritto:


    Il libro che ho comprato è stato quasi inutile 800 pagine ed ho imparato pochissomo, tanti argomenti li conoscevo.
    Cmq si l'ho notato anche io che devo guardare meglio diversi argomenti..,
    Ci vorrebbe un libro che tratta un livello avanzato di java.
    Se hai un libro che parla principalmente del linguaggio Java, difficilmente coprirà AWT/Swing e se invece lo fa, non va sicuramente in dettagli approfonditi.
    Se vuoi un libro solo dedicato a Swing, c'è che è molto buono per una introduzione e anche qualcosa di "mediamente" avanzato.
Devi accedere o registrarti per scrivere nel forum
7 risposte