2008-10-07 36 views
35

में ग्राफिक्स को डालने के लिए हमेशा सुरक्षित है मान लें कि हम हमेशा एक सूर्य जेवीएम (कहते हैं, 1.5+) का उपयोग करते हैं, क्या ग्राफिक्स 2 डी के लिए ग्राफिक्स संदर्भ डालना हमेशा सुरक्षित है?जावा 2 डी: ग्राफिक्स 2 डी

मैंने इसे अभी तक कोई समस्या नहीं देखी है और मेरी समझ के लिए, ग्राफिक्स क्लास विरासत कोड है, लेकिन जावा डिज़ाइनर पिछड़ा संगतता को पूर्ववर्ती करने के लिए स्विंग और एडब्ल्यूटी कक्षाओं के इंटरफेस को बदलना नहीं चाहता था।

उत्तर

24

चर्चा here के अनुसार, यह हमेशा Graphics2D को Graphics से कास्ट करने के लिए सुरक्षित है। हालांकि मैं इस पर आधिकारिक सूर्य बयान जल्दी से नहीं ढूंढ पा रहा हूं।

कारण यह Graphics2D को ग्राफिक्स से कास्ट करने के लिए मान्य है, क्योंकि सूर्य ने कहा है कि सभी ग्राफिक्स वस्तुओं जावा 1.2 में API द्वारा या ऊपर Graphics2D का एक उपवर्ग हो जाएगा।

एक ही संकेत के साथ here एक और संकेत।

ग्राफिक्स ऑब्जेक्ट हमेशा ग्राफिक्स 2 डी जी 2 डी = (ग्राफिक्स 2 डी) जी डाला जा सकता है;

+0

संदर्भों के लिए धन्यवाद। मैं इसे स्वीकार करने जा रहा हूं, भले ही यह सीधे सूर्य स्रोत का हवाला न दे क्योंकि मुझे लगता है कि यह काफी करीब है। –

+0

जैसा कि मुझे याद है कि सभी सन डॉक्स हमेशा ग्राफिक्स 2 डी सामान के लिए कलाकार दिखाते हैं, इसलिए मुझे लगता है कि यह सुरक्षित है। यदि आप वास्तव में pedantic बनना चाहते हैं, तो आप एक कोशिश/पकड़ ब्लॉक का उपयोग कर सकते हैं, लेकिन मेरा अनुमान है कि यदि आपके पास ग्राफिक्स 2 डी कक्षाएं हैं (JVM/libs पर्याप्त नया है), तो आप सुरक्षित हैं। – MBCook

+0

पहला लिंक मर चुका है – FDinoff

10

चेट हासे और रोमेन लड़का द्वारा पुस्तक Filthy Rich Client में वे कह रहे हैं कि स्विंग लगभग हमेशा एक Graphics2D वस्तु का उपयोग करता है। इससे अपवाद प्रिंटिंग और स्विंग की DebugGraphics ऑब्जेक्ट हैं। इसलिए जब तक इनमें से कोई भी परिस्थिति आपके कोड पर लागू न हो, तब तक Graphics2D पर जाकर सुरक्षित रहें।
दोनों लेखकों ने सूर्य पर काम किया, इसलिए मुझे लगता है कि वे जानते हैं कि वे किस बारे में बात कर रहे हैं।

6

2D Graphics Trail का कहना है:

आवेदन में जावा 2 डी एपीआई सुविधाओं को रोजगार के लिए, डाली ग्राफिक्स एक Graphics2D वस्तु के लिए एक घटक का प्रतिपादन विधि में पारित वस्तु। उदाहरण के लिए:

public void paint (Graphics g) { 
    Graphics2D g2 = (Graphics2D) g; 
    ... 
} 

यह सबसे "आधिकारिक" स्रोत मैं मिल सकता है। सूर्य के जावा ट्यूटोरियल से सीधे आ रहा है, मैं कहूंगा कि यह करने का आधिकारिक रूप से स्वीकृत तरीका है। अगर जावाडॉक्स ने इसे लिखा है तो मुझे बिल्कुल दिमाग नहीं होगा, हालांकि ...

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