2017-10-13 7 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; 
    } 
} 

} 

このクラスは、ユーザーがクリックした最初の2つのJButtonを記録します。 firstButtonはユーザがクリックした最初のボタンを表し、secondButtonはユーザがクリックした2番目のボタンを表します。2番目のボタンがクリックされるまでの最初のJButtonの色の変更

ユーザーが最初のJButtonをクリックすると、2番目のJButtonがクリックされている間、その色が赤に変わることを欲しいと思います。 2番目のJButtonをクリックすると、最初のJButtonの色を元の色に戻したいと思います。

私の現在の実装でこれを行うにはどうしますか?

答えて

1

をあなたの現在の実装を保持するには、この

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

ような何かをしようと私はfirstButtonを設定する必要があります後にnullにsecondButton? –

+0

@JackKongそれはあなたの要件に応じて、あなたは色を変更した後にボタンの参照をクリアする必要がありますか? – aKilleR

+0

最初のボタンと2番目のボタンを取得した後、2つのボタンがクリックされた何かを行う移動機能を呼び出す必要があります。 –

0

2番目のボタンをクリックすると背景色をデフォルトに設定できます。最初に最初のボタンをクリックすると、2番目のボタンをクリックすると赤色に変わり、最初のボタンの色がデフォルトの色に戻ります。

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

クリックされたボタンを識別し、それに応じて反応する、あなたが行うことができますするには、次の

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 
    } 
} 
関連する問題