2013-01-21 104 views
5

我有兩個JButtons叫做「左」和「右」。 「左」按鈕將矩形對象向左移動,「右」按鈕將其向右移動。 我有一個ActionListener在充當任何一個按鈕被點擊時的監聽器。 但是,我希望每次點擊時都會發生不同的操作。我如何區分ActionListener之間點擊哪個?一個動作監聽器,兩個JButtons

+2

可能重複[?爪哇 - 處理多個事件與一個函數(http://stackoverflow.com/questions/501533/java-handle-multiple-事件一功能) –

回答

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; 
} 
} 

UPDATE:

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; 
    } 
} 
} 
+0

我覺得這個一般更優雅。謝謝! – CodyBugstein

+0

雖然只有一秒,這是否需要ActionListener在同一個類中? – CodyBugstein

+1

定義一個ActionListener類。在UI類中聲明操作類的對象。使用addActionListener方法設置每個按鈕actionListener,並將此操作類引用添加爲param,最後將操作命令設置爲它們中的每一個。 – Amarnath

6

很易於使用ActionEvent可用getSource()方法:

JButton leftButton, rightButton; 

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

    if (src == leftButton) { 

    } 
    else if (src == rightButton) { 

    } 
}