2017-10-13 6 views
1
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 


import javax.swing.*; 

public class ButtonsActionListener implements ActionListener { 

    private JButton firstButton; 
    private JButton secondButton; 


    @Override 
    public void actionPerformed(ActionEvent e) { 
     if (firstClick == null) { 
      firstClick = (JButton) e.getSource(); 
     } else { 
      secondClick = (JButton) e.getSource(); 
      // Do something 
      firstClick = null; 
      secondClick = null; 
    } 
} 

} 

Cette classe enregistre les deux premiers JButtons sur lesquels l'utilisateur a cliqué. firstButton représente le premier bouton sur lequel l'utilisateur a cliqué et secondButton représente le second bouton sur lequel l'utilisateur a cliqué.Modification de la couleur du premier JButton jusqu'à ce que le second ait été cliqué

Je veux que lorsque l'utilisateur clique sur le premier JButton sa couleur devrait changer en rouge jusqu'à ce que le deuxième JButton a été cliqué. Une fois que le second JButton a été cliqué, je veux que la première couleur de JButton revienne à la couleur d'origine.

Y a-t-il un moyen de le faire avec mon implémentation actuelle?

Répondre

1

Pour préserver votre implémentation actuelle, essayer quelque chose comme ça

class ButtonsActionListener implements ActionListener { 

    private JButton firstButton; 
    private JButton secondButton; 

    @Override 
    public void actionPerformed(ActionEvent e) { 

    if (firstButton == null) { 
      firstButton = (JButton) e.getSource(); 
      firstButton.setBackground(Color.RED); 
     } else { 
      if (firstButton == (JButton) e.getSource()) { 
       firstButton.setBackground(Color.RED); 
      } else { 
       secondButton = (JButton) e.getSource(); 
       firstButton.setBackground(null);// reset to original color      
      } 
     } 


    } 

} 
+0

Dois-je mettre firstButton et secondButton à null après? –

+0

@JackKong Cela dépend de vos besoins, avez-vous besoin d'effacer les références de boutons après avoir changé la couleur? – aKilleR

+0

Après avoir obtenu le premier et le deuxième bouton, je dois appeler une fonction de déplacement qui fait quelque chose en fonction de laquelle deux boutons ont été cliqués. –

0

Vous pouvez définir la couleur d'arrière-plan par défaut une fois que vous avez cliqué sur le deuxième bouton. Initialement, lorsque l'on clique sur le premier bouton, la couleur devient rouge si l'on clique sur le second bouton, la couleur du premier bouton revient à la couleur par défaut.

public static void main(String[] args) { 
     final JButton button = new JButton("Click me"); 
     final JButton button2 = new JButton("Add"); 
     button.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       // TODO Auto-generated method stub 
       button.setBackground(Color.RED); 

      } 
     }); 
     button2.addActionListener(new ActionListener() 
     { 
      @Override 
      public void actionPerformed(ActionEvent e) 
      { 
       button.setBackground(null); 
      } 
     }); 
    } 
0

Pour identifier quel bouton a été cliqué, et réagir en conséquence, vous pouvez faire:

class ButtonsActionListener implements ActionListener { 

    @Override 
    public void actionPerformed(ActionEvent e) { 

      if (((JButton) e.getSource()) == firstButton) { 
       firstButtonClicked(); 
      } else if (((JButton) e.getSource()) == secondButton) { 
       secondButtonClicked(); 
      } 
    } 

    private void firstButtonClicked(){ 
     System.out.println("1st button clicked "); 
     //handle second button color 
    } 
    private void secondButtonClicked(){ 
     System.out.println("2nd button clicked "); 
     //handle second button color 
    } 
}