में शीर्ष कार्ड कैसे प्राप्त करें जावा के कार्डलाउट में शीर्ष कार्ड प्राप्त करना संभव है? मैंने दृश्यमान() के साथ दृश्यता की जांच करने के लिए प्रत्येक घटक के माध्यम से लूपिंग करने का प्रयास किया है, लेकिन ऐसा लगता है कि वे सभी "दृश्यमान" हैं।जावा के कार्डलेआउट
संपादित करें: "शीर्ष कार्ड" से मेरा मतलब है कि वर्तमान में "शीर्ष" पर मौजूद है, जिसे प्रदर्शित किया जा रहा है, पहले या अंतिम कार्ड नहीं। इसके अलावा, मैं अगर यह मदद करता है पता नहीं है लेकिन मैं एक JPanel के लिए देख रहा हूँ (या एक उपवर्ग क्या है)
संपादित करें: कोड स्निपेट
for (Component component : getComponents()) {
if (component instanceof JPanel && component.isVisible()) {
currentPanel = (JPanel) component;
System.out.println(currentPanel.getClass().getName());
}
}
ऊपर कोड हमेशा हर घटक वर्ग के नाम बाहर प्रिंट, भले ही वे दृश्य कार्ड हों या नहीं।
संपादित करें: मैं इसे स्कूल असाइनमेंट के हिस्से के रूप में उपयोग कर रहा हूं। मैं यहां एक फ्रीबी पाने की कोशिश नहीं कर रहा हूं, असाइनमेंट इस लेआउट के चारों ओर घूमता नहीं है। यह पैनलों के बीच बदलने के लिए सबसे सुविधाजनक लेआउट प्रतीत होता है। मेरे शिक्षक ने निर्दिष्ट किया है कि परियोजना में कोई तीसरा पक्ष कोड नहीं है। मैंने पहले कैमिक के लिंक से कार्यान्वयन देखा है लेकिन मैं इसका उपयोग नहीं कर सकता। मैं इसे समान रूप से समान सुविधाओं को कार्यान्वित कर सकता हूं और शायद इसे दस्तावेज़ीकरण में संदर्भ दे सकता हूं लेकिन मैं इसे डाउनलोड और उपयोग नहीं कर सकता।
संपादित करें: कारण मैं शीर्ष कार्ड प्राप्त करने का प्रयास कर रहा हूं क्योंकि मेरे पास "जोड़ें" बटन वाला टूलबार है। मेरी दो संभावित चीजों में से प्रत्येक के लिए एक ऐड बटन रखने के बजाय मैं यह जानना चाहता था कि वर्तमान में कौन सा पैनल देखा जा रहा है, यह देख कर कौन सा जोड़ना है। यदि ऐसा करने का कोई और अधिक उचित तरीका है तो कृपया मुझे बताएं।
संपादित करें: सभी को मदद करने के लिए धन्यवाद। मुझे पता चला कि समस्या क्या थी। मुझे लगता है कि यह मेरी गलती थी क्योंकि मैंने पर्याप्त जानकारी प्रदान नहीं की थी। मेरे दो कार्ड JScrollPane
एस हैं और मुझे यह पता लगाने के लिए इसकी सामग्री को देखने की भी आवश्यकता है कि क्या उन पैनलों में से एक मैं देख रहा था। मैंने स्क्रॉल फलक पर isVisible()
की जांच नहीं की थी, मैं इसके विरोधों को देख रहा था जो हमेशा दिखाई दे रहे हैं, यह स्क्रॉल फलक था जिसकी मुझे दृश्यता की आवश्यकता है।
public JPanel getCurrentPanel() {
JPanel currentPanel = null;
for (Component component : getComponents()) {
if (component.isVisible()) {
if (component instanceof JPanel)
currentPanel = (JPanel) component;
else if (component instanceof JScrollPane)
currentPanel = (JPanel) ((JScrollPane) component).getViewport().getComponent(0);
}
}
return currentPanel;
}
@RD, कोड स्निपेट जेपीनल में 'getCurrentPanel()' विधि के प्रयास से है जो कार्डलेआउट का उपयोग करता है। मैंने जेपीनेल को अन्य कारणों से बढ़ा दिया है, इसलिए मुझे इसकी पहुंच है। – alexcoco
ठीक है, आपके सभी कोड को देखे बिना, मैं आपको बता नहीं सकता कि क्या गलत हो रहा है, लेकिन मैं आपको बता सकता हूं कि मेरा टेस्टफ्रेम कोड सही समय पर केवल एक दृश्य कार्ड पाता है। –
@alexcoco, प्रासंगिक कोड को getCurrentCard() विधि में डालने के लिए संपादित किया गया। –