2010-11-13 12 views
5

कोड में एक जेपीनल है जिसमें एक आंतरिक जेननेल है जो बहुत ड्राइंग प्रदर्शित करता है। माउसक्लिक पर आंतरिक जेपीनल को अपने पॉलीमोर्फिक भाई बहनों में से एक द्वारा प्रतिस्थापित किया जाना है। यह कोड जेपीनल को प्रतिस्थापित नहीं कर रहा है।प्रोग्राम चल रहा है, जबकि एक जेपीनेल को दूसरे के साथ बदलने के लिए


class ContentPanel extends JPanel {

private GraphicPanel graphicPanel; 

    public ContentPanel(GraphicPanel graphicPanel) { 
    this.graphicPanel = graphicPanel; 
    add(this.graphicPanel); 

    public void setGraphicPanel(GraphicPanel graphicPanel) { 
    this.graphicPanel = graphicPanel; 

// अमान्य(); // पुनरीक्षण(); // repaint(); }

एक बहुरूपी रिश्तेदार को graphicPanel स्थापना किसी भी त्रुटि, यह सिर्फ नए graphicPanel पेंटिंग नहीं है नहीं कारण नहीं है। कार्डलाउट का उपयोग करना पसंद नहीं है, एक क्लीनर तरीका होना चाहिए। कैसे आगे बढ़ा जाए?

+2

क्लीनर तरीका कार्डलेआउट का उपयोग करना है। – Starkey

+0

मैंने कार्डलाउट का उपयोग किया। यह बहुत अच्छा काम करता है। धन्यवाद दोस्तों। –

उत्तर

3

setGraphicPanel में, आपको वर्तमान ग्राफिक पैनेल को हटाने और नया जोड़ने की आवश्यकता है। फिर पुनर्मूल्यांकन कॉल करें।

कुछ इस तरह:

public void setGraphicPanel(GraphicPanel graphicPanel) { 
    this.removeAll(); 
    this.graphicPanel = graphicPanel; 
    this.add(graphicPanel); 
    this.revalidate(); 
} 

CardLayout सिर्फ इस बात करने के लिए डिजाइन किया गया था हालांकि। क्या आप वाकई कार्डलाउट का उपयोग नहीं करना चाहते हैं?

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