2017-10-01 6 views
0

Comment faire pour changer l'écouteur de mise au point pour que seule l'action effectuée, ainsi quand le bouton a cliqué, il déclenchera la méthode de fondu?Event Listener pour changer la couleur du bouton lorsque vous cliquez sur

class FaderTimer implements FocusListener, ActionListener { 
    private ArrayList colors; 
    private JButton component; 
    private Timer timer; 
    private int alpha; 
    private int increment; 

    FaderTimer(ArrayList colors, JButton component, int interval) { 
     this.colors = colors; 
     this.component = component; 
     component.addFocusListener(this); 
     timer = new Timer(interval, this); 
    } 

    public void focusGained(FocusEvent e) { 
     alpha = 0; 
     increment = 1; 
     timer.start(); 
    } 

    public void focusLost(FocusEvent e) { 
     alpha = steps; 
     increment = -1; 
     timer.start(); 
    } 

    public void actionPerformed(ActionEvent e) { 
     alpha += increment; 

     component.setBackground((Color) colors.get(alpha)); 

     if (alpha == steps || alpha == 0) { 
      timer.stop(); 
     } 
    } 
} 
    } 
+1

Vous aurez besoin de deux 'ActionListener's, un pour le bouton et un pour le' Timer' – MadProgrammer

+1

Vous devez aussi prendre en considération que l'original le code est en train de disparaître et vous devez donc décider des actions à effectuer (vous êtes en train de passer ou de vous déconnecter) – MadProgrammer

+0

Je veux m'éclaircir quand on clique sur le bouton, comment ça se passe? @MadProgrammer –

Répondre

0

Quand vous posez une question que les gens ont besoin de connaître le contexte de la question. Il semble que vous ayez copié le code à partir d'une réponse comme: How to slowly change object color from one to another?

Ce code a été conçu pour fondre l'arrière-plan sur les événements focusGained et focusLost.

Donc, votre exigence est de le faire sur un clic de bouton. Donc, fondamentalement, vous devez ajouter un ActionListener au bouton pour invoquer la logique trouvée dans l'événement focusGained (...).

Une façon de faire cela pourrait être:

//component.addFocusListener(this); 
component.addActionListener(new ActionListener() 
{ 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     alpha = 0; 
     increment = 1; 
     timer.start(); 
    } 
}); 
+0

oui @camickr, j'ai été copié ce code depuis le lien que vous avez fourni, je suis désolé de ne pas inclure le lien source dans ma question, mais merci pour votre réponse, je vais l'essayer .. –

+0

si je veux pour le faire disparaître quand textfield n'est pas vide, et disparaître quand textfield est vide, comment le faire @camickr –