मैं जावा में नेटबीन्स आईडीई के साथ काम कर रहा हूं।जब मैं jpanel (जावा) पर क्लिक करता हूं तो फ़ंक्शन को कैसे कॉल करें?
मेरे पास एक जेपीनेल के साथ एक फॉर्म है। प्रत्येक जेपीनेल में एक ग्रिडलायआउट 3x3 होता है और प्रत्येक स्थान पर एक छवि का प्रतिनिधित्व होता है [0,1,2,3,4,5,6,7,8] (छवि बनाई गई है जो एक कस्टम क्लास का उपयोग करती है, न केवल फिटिंग एक प्रयोगशाला में छवि)।
जब मैं उपयोगकर्ता उन्हें क्लिक करता हूं तो पैनल में दो छवियों का आदान-प्रदान करने में सक्षम होना चाहता हूं (पहले क्लिक करें: कोई कार्रवाई नहीं, दूसरा क्लिक करें: जेपीनल घटक में लगाई गई दो छवियों को स्विच करें)।
मैं पहले से ही एक समारोह exchangeComponents बनाया है और एक परीक्षण कोड के साथ (जैसे:
exchangeComponents (0,8,jPanel1)
इसे सही ढंग से आदान) position1 (1 पंक्ति, 1 स्तंभ में स्थित छवियों और position2 में (3 पंक्ति, 3 स्तंभ) ।
समारोह एक creted निम्नलिखित है:
public void exchangeComponents(int component1,int component2,JPanel jpanel){
try{
Component aux1 = jpanel.getComponent(component1);
Point aux1Loc = aux1.getLocation();
Component aux2 = jpanel.getComponent(component2);
Point aux2Loc = aux2.getLocation();
aux1.setLocation(aux2Loc);
aux2.setLocation(aux1Loc);
}
catch (java.lang.ArrayIndexOutOfBoundsException ex){ /* error! bad input to the function*/
System.exit(1);
}
}
मुझे लगता है मैं एक घटना है कि समारोह exchangeComponents फोन() के लिए neeed जब उपयोगकर्ता ग jpanel1 पर छवियों में से एक पर चाटना लेकिन मुझे यह कैसे करना चाहिए? और यह जांचने के लिए कि उपयोगकर्ता ने कौन से घटक (छवियों) का चयन किया है? मैं सिर्फ इतना पता है कि जब मैं एक बटन बनाने के अगर उस पर एक क्लिक (आईडीई से) की तरह
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
// some code..
}
एक घटना बन जाता है और कोड मैं में भरने निष्पादित किया जाता है।
किसी भी संकेत के लिए अग्रिम धन्यवाद।
धन्यवाद। यह बहुत स्पष्ट है .. लेकिन img1.addMouseListener (यह) के साथ; मैं फॉर्म हेल्फ़्ट पास करता हूं और यह कहता है "त्रुटि: माउस लिस्टर की उम्मीद है"। तो क्या? – dragonmnl
अच्छी तरह से, मैंने इसे किया (क्लास को कॉम्पोनेंट लागू करने वाले माउसलिस्टर बनाया) और img1.addMouseListener (नया घटक लिस्टनर()) का उपयोग कर किया। समस्या अब है .. मैंने प्रत्येक घटक के लिए श्रोता जोड़ा लेकिन जब मैं किसी भी घटक (छवि) पर क्लिक करता हूं तो ईवेंट – dragonmnl
पर ट्रिगर नहीं होता है, मुझे नहीं लगता कि मैंने इसे बहुत स्पष्ट बना दिया है, लेकिन आपकी कक्षा को इसकी आवश्यकता है MouseListener को लागू करें, फिर आपको श्रोता को अपने प्रत्येक घटकों में जोड़ना होगा जिन्हें चारों ओर स्विच किया जा रहा है। @dragonml – DankMemes