क्या पैनल का नाम प्राप्त करना संभव है जिसे जेएलएबल में जोड़ा गया है? मैंने कुछ जेएलएबल्स को विभिन्न जेपीनेल में जोड़ा, और मैं विभिन्न माउस इवेंट्स को कॉल करना चाहता हूं कि जेएलएबल्स किस पैनल पर रखा गया है।जेएलएबल - पैरेंट पैनल प्राप्त करें?
उत्तर
यदि आप label.getParent()
चलाते हैं तो यह लेबल पैनल को अंदर वापस कर देगा।
फिर आप parent.getName()
पर कॉल कर सकते हैं लेकिन तथ्य यह है कि अब आपके पास उस ऑब्जेक्ट की आवश्यकता होगी जिसके लिए आपको इसकी आवश्यकता नहीं हो सकती है।
सबसे आसान तरीका यह करने के लिए:
//label1 and label2 are JLabel's
//panel1 and panel2 are JPanel's
doActionsForLabel(label1);
doActionsForLabel(label2);
public void doActionsForLabel(JLabel label)
{
if (label.getParent() == panel1)
{
//do action #1
}
else if (label.getParent() == panel2)
{
//do action #2
}
}
ऊपर कोड मानता है कि लेबल JPanels के प्रत्यक्ष बच्चे हैं। हालांकि, यह हमेशा मामला नहीं हो सकता है, कभी-कभी वे पैनल के महान पोते या महान-पोते-पोते हैं। यदि ऐसा है, तो आप माता-पिता पदानुक्रम को पार करने के लिए कुछ और जटिल परिचालन करेंगे।
public void doActionsForLabel(JLabel label)
{
boolean flag = true;
Component parent = label;
while (flag)
{
parent = parent.getParent();
if ((parent != null) && (parent instanceof JPanel))
{
if (label.getParent() == panel1)
{
//do action #1
}
else if (label.getParent() == panel2)
{
//do action #2
}
}
else
{
flag = false;
}
}
}
गॉर्डन के रूप में सुझाव दिया है, अगर आप घटकों के समानता के लिए परीक्षण करने के लिए नहीं करना चाहते हैं, तो आप घटकों के गुणों की समानता के लिए परीक्षण कर सकते हैं:, label.getParent() == panel1
की
इसके बजाय इस या इसी तरह के बजाय करना : label.getParent().getName().equals("panel_1_name")
।
आप कितना गहरा नीचे अपने लेबल पदानुक्रम में है, वहाँ SwingUtilities
में कुछ उपयोगी कार्यों है, उदाहरण के लिए पता नहीं है: SwingUtilities.getAncestorOfClass(Class, Component)
अपने लेबल में पैरेंट कंटेनर के नाम की जाँच करने के लिए एक विकल्प हो सकता है घटना को सीधे पैरेंट कंटेनर में अग्रेषित करने के लिए और माता-पिता को काम करने दें। आप जो हासिल करने की कोशिश कर रहे हैं उसके आधार पर, यह माता-पिता से लेबल को कम करने के लिए उपयोगी हो सकता है। अग्रेषण घटनाओं को Component. processEvent (AWTEvent)
का उपयोग करके किया जा सकता है।
और 'सार्वजनिक स्थैतिक कंटेनर प्राप्त करें पूर्वजों नामांकित (स्ट्रिंग नाम, घटक कंप)', अगर हम नाम जानते हैं। धन्यवाद! – FaithReaper
- 1. पैरेंट फ़ंक्शन प्राप्त करें
- 2. पैरेंट क्लास नाम प्राप्त करें?
- 3. जेएलएबल
- 4. जेएलएबल
- 5. जेएलएबल
- 6. जेएलएबल
- 7. जेएलएबल
- 8. जेएलएबल
- 9. जावा में पैरेंट यूआरएल कैसे प्राप्त करें?
- 10. एंड्रॉइड - पैरेंट लेआउट की ऊंचाई प्राप्त करें
- 11. जेएलएबल पर कैसे आकर्षित करें?
- 12. एक जेएलएबल
- 13. जावा जेएलएबल
- 14. पैनल
- 15. पैरेंट
- 16. बच्चे divs से पैरेंट div की अनुक्रमणिका प्राप्त करें
- 17. वर्तमान नोड के पैरेंट नोड नाम कैसे प्राप्त करें?
- 18. वर्तमान फ़ाइल का पैरेंट फ़ोल्डर प्राप्त करें PHP
- 19. फेसबुक iframe से पैरेंट पेज एचटीएमएल सामग्री प्राप्त करें?
- 20. पैरेंट
- 21. ExtJs में ग्रिड पैनल की चुनी पंक्तियां कैसे प्राप्त करें?
- 22. वीबी.Net में पैनल में स्क्रॉलबार कैसे प्राप्त करें?
- 23. एक स्विंग जेएलएबल
- 24. पैरेंट
- 25. पैरेंट
- 26. जावा स्विंग में जेएलएबल पर जेबटन ओवरले करें?
- 27. डिफ़ॉल्ट जेएलएबल फ़ॉन्ट बदलना
- 28. जेएलएबल में दो आइकन?
- 29. जेएलएबल पेंट्स डॉट
- 30. पैरेंट
धन्यवाद कि बहुत उपयोगी था :) – Kari
आपका स्वागत है ... – bguiz