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.