2012-06-01 20 views
5

मैं थोड़ा जावा ग्राफिक्स वर्ग के साथ चारों ओर खेल रहा हूँ और मैं बस सोच रहा था में विधि - जब यह आवश्यक विधि repaint() कॉल करने के लिए है? मैंने इसे टिप्पणी करने की कोशिश की और यह मेरे आउटपुट जीयूआई को प्रभावित नहीं कर रहा था। मैंने देखा है कि यह जावा जीयूआई कोड में बहुत कुछ इस्तेमाल करता है जिसे मैंने पढ़ा है। क्या कोई इसका इस्तेमाल करने के बारे में बताएगा और इसका उपयोग कब नहीं करेगा?रीपेंट() जावा

उत्तर

1

यह वास्तव में सबसे स्विंग अनुप्रयोगों में आवश्यक कभी नहीं है, क्योंकि वे (जैसे बटन पर पाठ मान बदलकर और सूची बॉक्स के लिए डेटा जोड़ने के रूप में आम के संचालन के लिए) स्वचालित रूप से इसे संभाल।

आम तौर पर, यह केवल तभी होता है जब आपने कुछ प्रकार का परिवर्तन किया हो जो स्विंग स्वचालित रूप से नहीं उठाएगा - उदाहरण के लिए, आप लेआउट मैनेजर का उपयोग नहीं कर रहे हैं और मैन्युअल रूप से घटकों का आकार बदल रहे हैं (क्योंकि आम तौर पर लेआउट मैनेजर इसके पश्चाताप करता है आवश्यक होने पर घटक)।

+0

आपको बहुत बहुत धन्यवाद! –

0

जब आप अपने आवेदन शुरू, आप अपने जीयूआई को "पेंट"।

आप repaint() कॉल करने के लिए जब आप अपने जीयूआई फिर से आकर्षित करने के लिए है क्योंकि आप कुछ अंदर बदल दिया है चाहता हूँ की जरूरत है।

यदि आप कोई बटन हटाना चाहते हैं, तो आपको इसे हटाने की आवश्यकता है (या इसे अदृश्य बनाएं) तो आपको GUI की पुन: गणना (पुनः ड्रा) करने के लिए validate() या repaint() पर कॉल करने की आवश्यकता है।

1

repaint() (घटक) दृश्य ताज़ा करता है, इसलिए जब भी आप घटक पर किसी भी परिवर्तन करते हैं, तो आप इसे कॉल करना होगा। उदाहरण के लिए, यदि आप ग्राफिकल घटक घुमाने के लिए, आप एक कॉल repaint() को करना चाहिए क्रम में युक्त घटक पर परिवर्तन देखने के लिए

+0

स्पष्टीकरण के लिए धन्यवाद! मैं वास्तव में अपने ग्राफ़िक को बनाने की कोशिश कर रहा हूं कि जब कोई उपयोगकर्ता एक्स-अक्ष पर क्लिक करता है (यह एक ध्वनि गति साजिश है) कि ग्राफ़ ग्राफ के उस विशेष भाग पर ज़ूम इन करेगा। मैं ऐसा करने के लिए थोड़ा फंस गया हूं। आपके पास कोई विचार है? –

+0

यही वह है जो मैं संभवतः करता हूं: 'getX() 'और' getY() 'द्वारा दिए गए बिंदु के समन्वयक प्राप्त करें। फिर एक ग्राफिक ** जी ** बनाएं जो वह क्षेत्र होगा जिसे मैं दिखाना चाहता हूं और 'repain (g) '। –

0

केवल सामान मैं के बारे में सोच सकते हैं:

new Thread() { 
    @Override 
    public void run() { 
    while (ClassName.this.isVisible()) { 
     ClassName.this.updateStatusLabel(); 
     ClassName.this.validate(); 
     ClassName.this.repaint(50L); 
     try { 
     Thread.sleep(1000); 
     } catch (final InterruptedException e) { 
     Log.log(e); 
     } 
    } 
    } 
}.start(); 

मान लीजिए आपके पास JDialog के निर्माता में कोड के ऊपर। अपडेटस्टैटस लेबल एक बूलियन वैरिएबल की जांच कर रहा है, या तो एक विधि के माध्यम से सार्वजनिक या सेटटेबल, और बेस में जेएलएबल के आइकन को ऐसे बूलियन पर सेट करें। यदि आप जीयूआई को मान्य और पुन: प्रस्तुत नहीं करते हैं, तो संशोधन एक और घटना तक नहीं दिखाया जाएगा, संभवतः उपयोगकर्ता द्वारा ट्रिगर किए जाने वाले संभावित रूप से फेंक दिया जाता है। और, यदि उपयोगकर्ता लेबल के लिए एक निश्चित आइकन दिखाने का इंतजार कर रहा है, तो मान लें कि, यह इंगित करता है कि कोई डिवाइस इंटरनेट के माध्यम से पहुंच योग्य है या नहीं, वह कभी भी बातचीत नहीं करेगा (या, कम से कम, आप इंटरैक्शन में देरी कर रहे हैं बहुत ज्यादा)।

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

  • कोई संबंधित समस्या नहीं^_^