2013-01-21 15 views
5

मेरे पास दो JButtons "बाएं" और "दाएं" नामक हैं। "बाएं" बटन बाईं ओर एक आयत वस्तु को स्थानांतरित करता है और "दाएं" बटन इसे दाईं ओर ले जाता है। मेरे पास कक्षा में ActionListener है जो श्रोता के रूप में कार्य करता है जब बटन क्लिक किया जाता है। हालांकि मैं प्रत्येक क्लिक पर क्लिक होने पर विभिन्न कार्यों को करना चाहता हूं। मैं ActionListener में, किस बीच क्लिक किया गया था, में अंतर कैसे कर सकता हूं?एक एक्शन श्रोता, दो जेबुटन

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

अद्यतन:

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

हालांकि एक सेकंड हालांकि, क्या यह आवश्यक है कि एक्शनलिस्टर एक ही कक्षा में हो? – CodyBugstein

+1

एक एक्शनलिस्टर वर्ग परिभाषित करें। यूआई कक्षा में एक्शन क्लास की ऑब्जेक्ट घोषित करें। AddActionListener विधि का उपयोग करके प्रत्येक बटन कार्रवाईसूची सेट करें और इस क्रिया वर्ग संदर्भ को param के रूप में जोड़ें और आखिरकार उनमें से प्रत्येक को एक्शन कमांड सेट करें। – Amarnath

6

getSource()ActionEvent के लिए उपलब्ध विधि के साथ काफी आसान:

JButton leftButton, rightButton; 

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

    if (src == leftButton) { 

    } 
    else if (src == rightButton) { 

    } 
} 
संबंधित मुद्दे