2012-03-07 23 views
6

मैं यह जानना चाहता हूं कि एक जेपीनल स्क्रीन पर है या नहीं। इसका मतलब यह नहीं है कि इस स्थिति के लिए isVisible() विधि का उपयोग किया जा सकता है। मेरा मतलब है कि मैं यह जानना चाहता हूं कि एक घटक जो पहले शुरू किया गया है, वर्तमान में मेरे मुख्य पैनल पर घटकों में से एक है या नहीं।स्क्रीन पर प्रदर्शित होने वाले जावा घटक को कैसे ढूंढें

संपादित करें और अधिक स्पष्टीकरण: मेरे कार्यक्रम में पहले कई पैनल शुरू किए गए हैं और आवश्यकतानुसार मेरे रूप में उनका उपयोग करते हैं। मैं अब उदाहरण के लिए jpanel1 जानना चाहता हूं जो अब मेरे पैनल पर मौजूद किसी भी पैनल पर है।

उदाहरण:

public class GUI extends JFrame() { 

    private JPanel1, jPanel2; 

    public static void main(String[] args) { 
     GUI gui = new GUI(); 
     jPanel1 = new JPanel(); 
     jPanel2 = new JPanel(); 
     gui.setContentpane(jPanel1); 
     gui.setVisible(true); 
    } 

} 

अब jPanel1 स्क्रीन पर दिखाई देता है बू jPanel2 दिखाई नहीं देता है। मैं इसे कैसे ढूंढ सकता हूं?

+0

हाँ संभव है, आप कृपया के साथ एक अन्य [SSCCE] (http://sscce.org/), हो सकता है देखते हैं अपने प्रश्न संपादित कर सकते हैं विकल्प – mKorbel

+2

क्या आपका मतलब है IsShowing() ?: http://docs.oracle.com/javase/6/docs/api/java/awt/Component.html#isShowing() –

+0

@mKorbel: स्पष्ट है और मैंने समझाया मतलब है। – sajad

उत्तर

10

जांच के बाद मैं इस विधि का पता लगाने के प्रतिनिधित्व करता है कि घटक स्क्रीन या नहीं पर प्रदर्शित होता है:

isDisplayable()

मेरे उदाहरण में

:

jPanel1.isDisplayable() // सच आता है

jPanel2.isDisplayable() // रिटर्न झूठी

इस के रूप में सरल!

+1

संभावित तरीकों में से एक +1 – mKorbel

+0

@mKorbel तो मैंने पहिया को फिर से शुरू किया? :) – Juvanis

+0

@ डिपोटर मुझे ऐसा लगता है कि :-), मूल रूप से आपका उत्तर सही दिशा में जाता है, क्योंकि आपको हर पल में जानना होगा कि आपका कोड कहां और कहां काम करता है – mKorbel

0

यदि आप किसी मुख्य पैनल के बच्चों की तलाश में हैं, तो आप अपने पैनलों की एक सरणी वापस करने के लिए मुख्य पैनल पर getComponents() पर कॉल कर सकते हैं, फिर उनसे जांच कर सकते हैं कि इनमें से कोई भी पैनल आप ढूंढ रहे हैं या नहीं। यदि पैनल मुख्य पैनल का प्रत्यक्ष बच्चा नहीं है तो आपको इसे बार-बार कॉल करने की आवश्यकता हो सकती है।

+0

नहीं श्रीमान मेरे पास मेरे कार्यक्रम में पहले कई पैनल शुरू किए गए हैं और आवश्यकतानुसार मेरे रूप में उनका उपयोग करते हैं। मैं अब किसी भी पैनल पर jpanel1 उदाहरण के लिए जानना चाहता हूं जो अब मेरे रूप में मौजूद है। – sajad

0

अपनी खुद की पैनल कक्षा लिखें जो JPanel फैली हुई है। isOnTheScreen() नामक इस श्रेणी में एक नई विधि जोड़ें जो बूलियन लौटाता है यह दर्शाता है कि पैनल विंडो में जोड़ा गया है या नहीं।

public class MyPanel extends JPanel 
{ 
    boolean isAdded = false; 

    public boolean isOnTheScreen() 
    { 
     return isAdded; 
    } 

    public void setOnTheScreen(boolean isAdded) 
    { 
     this.isAdded = isAdded; 
    } 
} 

अपनी खुद की पैनल ऑब्जेक्ट्स बनाने के बाद, यह जानने के लिए ऊपर दिए गए तरीकों का उपयोग करें कि पैनल को मुख्य पैनल/फ्रेम में जोड़ा गया है या नहीं। आप इसे मुख्य स्क्रीन पर एक फ्रेम जोड़ने के रूप में, इस मामले में, setOnTheScreen(true) फोन और इसी तरह setOnTheScreen(false) फोन जब आप पैनल को दूर

JFrame frame = new JFrame() 
MyPanel panel = new MyPanel(); 
frame.getContentPane().add(panel); 
panel.setOnTheScreen(true); 

जैसे ही: मान लीजिए आप एक फ्रेम करने के लिए एक पैनल जोड़ लिया है।

इस डिज़ाइन के बाद आप यह निर्धारित कर सकते हैं कि पैनल को मुख्य विंडो में जोड़ा गया है या नहीं, केवल isOnTheScreen() को अपने कोड में कहीं भी आमंत्रित करके। मुझे आशा है कि यह डिज़ाइन आपकी मदद करेगा।

+1

धन्यवाद लेकिन यह एक बहुत साफ तरीका नहीं है। यह मेरे सभी पैनलों में इसे लागू करना मुश्किल है। मैंने अपने डालने का एक उदाहरण जोड़ा। कृपया इसे – sajad

+0

@ सज़ाद देखें यह एक बहुत ही साफ तरीका है। यदि आप विरासत की शक्ति में विश्वास करते हैं, तो जेपीएएल का विस्तार करना मुश्किल नहीं होना चाहिए। वैसे भी, यह सिर्फ एक सुझाव है, तो आपको एक और समाधान मिलना होगा। – Juvanis

+1

-1 ए) मौजूदा कार्यक्षमता को डुप्लिकेट करना, केवल बदतर (क्लाइंट कोड से प्रभावी होने की आवश्यकता है) बी) अगर आपको ऐसा करने की आवश्यकता नहीं है तो उप-वर्ग नहीं है (_ कठिन नहीं होना चाहिए पर्याप्त कारण नहीं है)। @sajad अच्छी तरह से देखा :-) – kleopatra

4

jPanel1.isVisible()==true jPanel1.isVisible()==false

पैनल के लिए

jPanel1.isShowing() भी काम करता है

+1

हां, 'isShowing()' टैब में घटकों के लिए ठीक काम कर रहा है – BullyWiiPlaza

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