5

私はJButtons「左」と「右」と呼ばれる2つを持っています。「左」ボタンは長方形オブジェクトを左に移動し、「右」ボタンは右に移動します。ActionListenerいずれかのボタンがクリックされたときのリスナーとして機能するクラスが 1 つあります。ただし、それぞれがクリックされたときに異なるアクションが発生するようにします。ActionListenerで、どちらがクリックされたかをどのように区別できますか?

4

2 に答える 2

8

各ボタンにactionCommandを設定します。

// アクション コマンドを両方のボタンに設定します。

 btnOne.setActionCommand("1");
 btnTwo.setActionCommand("2");

public void actionPerformed(ActionEvent e) {
 int action = Integer.parseInt(e.getActionCommand());

 switch(action) {
 case 1:
         //doSomething
         break;
 case 2: 
         // doSomething;
         break;
 }
}

アップデート:

public class JBtnExample {
    public static void main(String[] args) {
        JButton btnOne = new JButton();
        JButton btnTwo = new JButton();

        ActionClass actionEvent = new ActionClass();

        btnOne.addActionListener(actionEvent);
                btnTwo.addActionListener(actionEvent);

        btnOne.setActionCommand("1");
        btnTwo.setActionCommand("2");
    }
} 

class ActionClass implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        int action = Integer.parseInt(e.getActionCommand());
        switch (action) {
        case 1:
            // DOSomething
            break;
        case 2:
            // DOSomething
            break;                          
        default:
            break;
        }
    }
}
于 2013-01-21T16:49:48.297 に答える
6

getSource()で利用できるメソッドを使用すると、非常に簡単ActionEventです。

JButton leftButton, rightButton;

public void actionPerformed(ActionEvent e) {
  Object src = e.getSource();

  if (src == leftButton) {

  }
  else if (src == rightButton) {

  }
}
于 2013-01-21T16:43:31.667 に答える