what is java awt
यह जावा AWT ट्यूटोरियल बताता है कि जावा में सार विंडो टूलकिट क्या है और संबंधित अवधारणाओं जैसे AWT कलर, पॉइंट, ग्राफिक्स, AWT बनाम स्विंग, आदि:
हमने अपने पहले के ट्यूटोरियल में बुनियादी GUI शब्दों से परिचय कराया। इस ट्यूटोरियल में, हम जावा में सबसे पुराने GUI फ्रेमवर्क में से एक पर चर्चा करेंगे, जिसे 'AWT फ्रेमवर्क' कहा जाता है। AWT 'सार विंडो टूलकिट' का संक्षिप्त रूप है।
AWT जावा में GUI एप्लिकेशन बनाने के लिए एक एपीआई है। यह एक प्लेटफ़ॉर्म-आश्रित ढांचा है यानी AWT से संबंधित GUI घटक सभी प्लेटफ़ॉर्म पर समान नहीं हैं। प्लेटफॉर्म के मूल स्वरूप और अनुभव के अनुसार, AWT घटकों के रंगरूप में भी परिवर्तन होता है।
=> यहाँ सभी जावा ट्यूटोरियल की जाँच करें।
आप क्या सीखेंगे:
जावा AWT (सार विंडो टूलकिट)
जावा एडब्ल्यूटी देशी प्लेटफार्मों के सबरूटीन्स को कॉल करके घटक बनाता है। इसलिए, एक AWT GUI एप्लीकेशन में विंडोज और मैक ओएस पर चलने के दौरान विंडोज ओएस का लुक और फील होगा और मैक इत्यादि को चलाते समय महसूस होगा। यह सार विंडो टूलकिट अनुप्रयोगों के प्लेटफ़ॉर्म निर्भरता की व्याख्या करता है।
अपने प्लेटफ़ॉर्म-निर्भरता और इसके घटकों की एक प्रकार की भारी वजन के कारण, यह शायद ही कभी इन दिनों जावा अनुप्रयोगों में उपयोग किया जाता है। इसके अलावा, स्विंग जैसे नए फ्रेमवर्क भी हैं जो हल्के वजन और प्लेटफ़ॉर्म-स्वतंत्र हैं।
AWT की तुलना में स्विंग में अधिक लचीले और शक्तिशाली घटक होते हैं। स्विंग, सार विंडो टूलकिट के समान घटक प्रदान करता है और इसमें अधिक उन्नत घटक जैसे पेड़, टैब्ड पैनल आदि भी होते हैं।
लेकिन यहां एक बात ध्यान देने वाली है कि द जावा स्विंग रूपरेखा AWT पर आधारित है। दूसरे शब्दों में, स्विंग एक उन्नत एपीआई है और यह सार विंडो टूलकिट ढांचे का विस्तार करता है। इससे पहले कि हम स्विंग ट्यूटोरियल में कूदें, आइए इस रूपरेखा का अवलोकन करें।
AWT पदानुक्रम और घटक
अब देखते हैं कि Java में Abstract Window Toolkit पदानुक्रम कैसे दिखता है।
नीचे दिए गए जावा में AWT पदानुक्रम का आरेख है।
जैसा कि ऊपर चित्र में दिखाया गया है कि रूट AWT घटक ’घटक’ the ऑब्जेक्ट ’वर्ग से फैला है। घटक वर्ग लेबल, बटन, सूची, चेकबॉक्स, विकल्प, कंटेनर, आदि सहित अन्य घटकों का जनक है।
एक कंटेनर को आगे पैनलों और खिड़कियों में विभाजित किया गया है। एक एप्लेट क्लास पैनल से निकलती है जबकि फ़्रेम और डायलॉग विंडो घटक से निकलते हैं।
अब इन घटकों की संक्षिप्त चर्चा करें।
घटक वर्ग
घटक वर्ग पदानुक्रम की जड़ है। एक घटक एक सार वर्ग है और वर्तमान पृष्ठभूमि और अग्रभूमि रंगों के साथ-साथ वर्तमान पाठ फ़ॉन्ट के लिए जिम्मेदार है।
घटक वर्ग दृश्य घटक गुणों और विशेषताओं को एन्क्रिप्ट करता है।
पात्र
कंटेनर AWT घटकों में पाठ, लेबल, बटन, टेबल, सूची आदि जैसे अन्य घटक हो सकते हैं। कंटेनर अन्य घटकों पर एक टैब रखता है जो GUI में जोड़े जाते हैं।
पैनल
पैनल कंटेनर वर्ग का एक उपवर्ग है। एक पैनल एक ठोस वर्ग है और इसमें शीर्षक, सीमा या मेनू पट्टी शामिल नहीं है। यह अन्य घटकों को रखने के लिए एक कंटेनर है। एक फ्रेम में एक से अधिक पैनल हो सकते हैं।
खिड़की वर्ग
विंडोज़ क्लास शीर्ष स्तर पर एक विंडो है और हम विंडो बनाने के लिए फ़्रेम या संवाद का उपयोग कर सकते हैं। एक विंडो में बॉर्डर या मेनू बार नहीं हैं।
ढांचा
फ़्रेम विंडो क्लास से निकलता है और इसे आकार दिया जा सकता है। फ़्रेम में बटन, लेबल, फ़ील्ड, शीर्षक बार आदि जैसे विभिन्न घटक हो सकते हैं। फ़्रेम का उपयोग अधिकांश सार विंडो टूलकिट अनुप्रयोगों में किया जाता है।
बी + पेड़ बनाम बी पेड़
एक फ्रेम दो तरीकों से बनाया जा सकता है:
# 1) फ़्रेम क्लास ऑब्जेक्ट का उपयोग करके
यहां, हम फ़्रेम क्लास को इंस्टेंट करके एक फ़्रेम क्लास ऑब्जेक्ट बनाते हैं।
एक प्रोग्रामिंग उदाहरण नीचे दिया गया है।
import java.awt.*; class FrameButton{ FrameButton (){ Frame f=new Frame(); Button b=new Button('CLICK_ME'); b.setBounds(30,50,80,30); f.add(b); f.setSize(300,300); f.setLayout(null); f.setVisible(true); } public static void main(String args()){ FrameButton f=new FrameButton (); } }
आउटपुट:
# 2) फ़्रेम वर्ग का विस्तार करके
यहां हम एक वर्ग बनाते हैं जो फ़्रेम क्लास का विस्तार करता है और फिर इसके निर्माता में फ्रेम के घटकों का निर्माण करता है।
यह नीचे दिए गए कार्यक्रम में दिखाया गया है।
import java.awt.*; class AWTButton extends Frame{ AWTButton (){ Button b=new Button('AWTButton'); b.setBounds(30,100,80,30);// setting button position add(b);//adding button into frame setSize(300,300);//frame size 300 width and 300 height setLayout(null);//no layout manager setVisible(true);//now frame will be visible, by default not visible } public static void main(String args()){ AWTButton f=new AWTButton (); } }
आउटपुट:
AWT रंग वर्ग
एडब्ल्यूटी आउटपुट जो हमने ऊपर दिखाया है, पृष्ठभूमि और अग्रभूमि के लिए डिफ़ॉल्ट रंग थे। अमूर्त विंडो टूलकिट एक रंग वर्ग प्रदान करता है जिसका उपयोग घटकों को रंग बनाने और सेट करने के लिए किया जाता है। हम घटक गुणों के माध्यम से एक रूपरेखा का उपयोग करके घटकों को रंग भी सेट कर सकते हैं।
रंग वर्ग हमें समान रूप से प्रोग्राम करने की अनुमति देता है। इस प्रयोजन के लिए, रंग वर्ग RGBA रंग मॉडल (RGBA = RED, GREEN, BLUE, ALPHA) या HSB (HSB = HUE, SATURATION, BRICompords) मॉडल का उपयोग करता है।
हम इस वर्ग के विवरण में नहीं जाएंगे, क्योंकि यह इस ट्यूटोरियल के दायरे से परे है।
निम्न तालिका रंग वर्ग द्वारा प्रदान किए गए विभिन्न तरीकों को सूचीबद्ध करती है।
कंस्ट्रक्टर / तरीके | विवरण |
---|---|
getBlue () | 0-255 की रेंज में नीला रंग घटक देता है। |
उज्जवल () | वर्तमान रंग का एक उज्जवल संस्करण बनाएँ। |
createContext (ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform x, RenderingHints h) | एक नया पेंट कॉन्टेक्स्ट देता है। |
गहरा () | वर्तमान रंग का गहरा संस्करण बनाता है। |
डिकोड (स्ट्रिंग एनएम) | स्ट्रिंग को पूर्णांक में परिवर्तित करके एक निर्दिष्ट अपारदर्शी रंग देता है। |
बराबर (ऑब्जेक्ट obj) | यह जांचता है कि क्या दी गई रंगीन वस्तु वर्तमान वस्तु के बराबर है। |
getAlpha () | 0-255 से लेकर रंग का अल्फा मान लौटाता है। |
getColor (स्ट्रिंग एनएम) | सिस्टम के गुणों से एक रंग देता है। |
getColor (स्ट्रिंग एनएम, कलर वी) | |
getColor (स्ट्रिंग एनएम, इंट वी) | |
getColorCompords (ColorSpace cspace, float () compArray) | निर्दिष्ट रंगस्पेस से रंग घटकों वाले फ्लोट प्रकार की एक सरणी देता है। |
getColorCompords (फ्लोट () compArray) | रंग के ColorSpace से रंग घटकों से युक्त फ्लोट प्रकार की एक सरणी देता है। |
getColorSpace () | वर्तमान रंग के ColorSpace लौटाता है। |
गेटग्रीन () | डिफ़ॉल्ट sRGB स्थान में 0-255 की सीमा में हरा रंग घटक देता है। |
लाल ले लो () | डिफ़ॉल्ट sRGB स्थान में 0-255 रेंज में लाल रंग घटक देता है। |
getRGB () | डिफ़ॉल्ट sRGB ColorModel में वर्तमान रंग का RGB मान लौटाता है। |
getHSBColor (फ्लोट एच, फ्लोट एस, फ्लोट बी) | निर्दिष्ट मूल्यों के साथ एचएसबी रंग मॉडल का उपयोग करके एक रंग वस्तु बनाता है। |
getTransparency () | इस रंग के लिए पारदर्शिता मान देता है। |
हैश कोड() | इस कलर के लिए रिटर्न हैश कोड है। |
HSBtoRGB (फ्लोट एच, फ्लोट एस, फ्लोट बी) | दिए गए HSB को RGB वैल्यू में बदलें |
RGBtoHSB (इंट आर, इंट जी, इंट बी, फ्लोट () hsbvals) | दिए गए RGB मानों को HSB मानों में परिवर्तित करता है। |
AWT पॉइंट जावा में
किसी स्थान को इंगित करने के लिए पॉइंट क्लास का उपयोग किया जाता है। स्थान दो-आयामी समन्वय प्रणाली से है।
तरीकों | विवरण |
---|---|
स्ट्रिंग() | बिंदु का स्ट्रिंग प्रतिनिधित्व लौटें। |
बराबर (वस्तु) | जांचें कि क्या दो अंक बराबर हैं। |
गेटलोकेशन () | वर्तमान बिंदु का वापसी स्थान। |
हैश कोड() | वर्तमान बिंदु के लिए हैशकोड लौटाता है। |
चाल (int, int) | दिए गए स्थान को (x, y) समन्वय प्रणाली में दिए गए स्थान पर ले जाता है। |
सेटलोकेशन (इंट, इंट) | बिंदु स्थान को निर्दिष्ट स्थान में बदलता है। |
सेटलोकेशन (प्वाइंट) | बिंदु के स्थान को दिए गए स्थान पर सेट करता है। |
अनुवाद (int, int) | X + dx, y + dy पर इंगित करने के लिए वर्तमान बिंदु का अनुवाद करें। |
AWT ग्राफिक्स वर्ग
ग्राफिक्स वर्ग से निकाले गए एप्लिकेशन में घटकों को खींचने के लिए सभी ग्राफिक्स सार विंडो टूलकिट में संदर्भ। एक ग्राफिक्स क्लास ऑब्जेक्ट में ऑपरेशन को रेंडर करने के लिए आवश्यक राज्य जानकारी होती है।
राज्य की जानकारी में आम तौर पर शामिल हैं:
- किस घटक को खींचना है?
- निर्देशन का प्रतिपादन और कतरन।
- वर्तमान रंग, फ़ॉन्ट और क्लिप।
- तार्किक पिक्सेल पर वर्तमान ऑपरेशन।
- वर्तमान XOR रंग
ग्राफिक्स वर्ग की सामान्य घोषणा इस प्रकार है:
public abstract class Graphics extends Object
AWT हेडलेस मोड और हेडलेससेप्शन
जब हमारी आवश्यकता होती है कि हमें ग्राफिक्स-आधारित एप्लिकेशन के साथ काम करना चाहिए, लेकिन वास्तविक कीबोर्ड, माउस या डिस्प्ले के बिना, तब इसे 'हेडलेस' वातावरण कहा जाता है।
जेवीएम को इस तरह के प्रमुख वातावरण के बारे में पता होना चाहिए। हम सार विंडो टूलकिट का उपयोग करके हेडलेस वातावरण भी सेट कर सकते हैं।
नीचे दिए गए अनुसार इसे करने के कुछ तरीके हैं:
# 1) प्रोग्रामिंग कोड का उपयोग करके सिस्टम प्रॉपर्टी 'java.awt.headless' को सही पर सेट करें।
#दो) निम्न शीर्षक रहित मोड गुण को सही पर सेट करने के लिए कमांड लाइन का उपयोग करें:
java -Djava.awt.headless = सच
# 3) एक सर्वर स्टार्टअप स्क्रिप्ट का उपयोग करके 'JAVA_OPTS' नाम के पर्यावरण चर में '-Djava.awt.headless = true' जोड़ें।
जब पर्यावरण हेडलेस होता है और हमारे पास एक कोड होता है जो डिस्प्ले, कीबोर्ड या माउस पर निर्भर होता है, और जब इस कोड को हेडलेस वातावरण में निष्पादित किया जाता है तब अपवाद 'HeadlessException' को उठाया जाता है।
HeadlessException की सामान्य घोषणा नीचे दी गई है:
आप एक धार फ़ाइल कैसे खोलते हैं
public class HeadlessException extends UnsupportedOperationException
हम उन अनुप्रयोगों में हेडलेस मोड के लिए जाते हैं, जिन्हें उदाहरण के लिए छवि-आधारित छवि लॉगिन की आवश्यकता होती है। उदाहरण के लिए, अगर हम हर लॉगिन या हर बार पेज रिफ्रेश होने के बाद इमेज बदलना चाहते हैं, तो ऐसे में हम इमेज लोड करेंगे और हमें कीबोर्ड, माउस आदि की आवश्यकता नहीं है।
जावा एडब्ल्यूटी बनाम स्विंग
आइए अब जावा AWT और स्विंग के बीच कुछ अंतरों को देखें।
AWT | जोरों |
---|---|
AWT ऑपरेटिंग सिस्टम के 21 साथियों या विगेट्स के साथ काम करता है जो प्रत्येक घटक के अनुरूप होता है। | स्विंग केवल एक ही सहकर्मी के साथ काम करता है जो कि विंडो ऑब्जेक्ट है। अन्य सभी घटक विंडो ऑब्जेक्ट के अंदर स्विंग द्वारा तैयार किए गए हैं। |
AWT का मतलब 'सार विंडोज टूलकिट' है। | स्विंग जावा फाउंडेशन क्लासेस (JFC) से लिया गया है। |
AWT घटक हैवीवेट हैं क्योंकि AWT सीधे ऑपरेटिंग सिस्टम के सबरूटीन को सबरूटीन कॉल करता है। | स्विंग घटकों को AWT के ऊपर लिखा जाता है और इस तरह के घटक हल्के वजन वाले होते हैं। |
AWT घटक java.awt पैकेज का हिस्सा हैं। | स्विंग घटक javax.swing पैकेज का हिस्सा हैं। |
AWT प्लेटफॉर्म है - निर्भर। | स्विंग घटक जावा में लिखे गए हैं और प्लेटफ़ॉर्म-स्वतंत्र हैं। |
AWT का अपना रूप और आभास नहीं है। यह उस मंच के रूप और स्वरूप को निहारता है जिस पर वह चलता है। | स्विंग अपने आप में एक अलग लुक और अहसास प्रदान करता है। |
एडब्ल्यूटी में केवल मूल विशेषताएं हैं और यह टेबल, टैब्ड पैनल आदि जैसी उन्नत सुविधाओं का समर्थन नहीं करता है। | स्विंग एडवांस फीचर जैसे जेटबेड पैनल, जेटबल आदि प्रदान करता है। |
AWT ऑपरेटिंग सिस्टम के शीर्ष पर बैठे वर्गों की एक पतली परत के रूप में अच्छा है जो इसे प्लेटफ़ॉर्म-निर्भर बनाता है। | स्विंग बड़ा होता है और इसमें समृद्ध कार्यक्षमता भी होती है। |
AWT हमें बहुत सी चीजें लिखने देता है। | स्विंग में अधिकांश विशेषताएं अंतर्निहित हैं। |
बार बार पूछे जाने वाले प्रश्न
Q # 1) जावा में AWT क्या है?
उत्तर: जावा में AWT को 'एब्सट्रैक्ट विंडो टूलकिट' के रूप में भी जाना जाता है, जो एक प्लेटफ़ॉर्म-डिपेंडेंट ग्राफिकल यूज़र इंटरफ़ेस फ्रेमवर्क है, जो स्विंगिंग फ्रेमवर्क से पहले होता है। यह जावा मानक GUI API, Java Foundation Classes या JFC का एक हिस्सा है।
Q # 2) क्या जावा एडब्ल्यूटी अभी भी उपयोग किया जाता है?
उत्तर: यह जावा में लगभग अप्रचलित है कुछ घटकों को छोड़कर जो अभी भी उपयोग किए जाते हैं। इसके अलावा, पुराने प्लेटफार्मों पर अभी भी कुछ पुराने एप्लिकेशन या प्रोग्राम चल रहे हैं जो AWT का उपयोग करते हैं।
Q # 3) जावा में AWT और स्विंग क्या है?
उत्तर: सार विंडो टूलकिट जावा में जीयूआई अनुप्रयोगों को विकसित करने के लिए एक प्लेटफ़ॉर्म-निर्भर एपीआई है। दूसरी ओर एक स्विंग GUI विकास के लिए एक एपीआई है और जावा फाउंडेशन क्लासेस (JFC) से लिया गया है। AWT घटक भारी-वजन वाले होते हैं जबकि स्विंग घटक हल्के वजन वाले होते हैं।
Q # 4) जावा एडब्ल्यूटी में फ्रेम क्या है?
उत्तर: एक फ्रेम को शीर्ष-स्तरीय घटक विंडो के रूप में परिभाषित किया जा सकता है जिसमें एक शीर्षक और एक सीमा होती है। फ़्रेम में layout बॉर्डर लेआउट ’अपने डिफ़ॉल्ट लेआउट के रूप में है। फ्रेम्स विंडो इवेंट जैसे क्लोज़, ओपन, क्लोज़िंग, एक्टिवेट, डीएक्टिनेटेड इत्यादि भी उत्पन्न करते हैं।
Q # 5) जावा AWT आयात क्या है?
उत्तर: जावा AWT आयात करें (आयात java.awt। *) इंगित करता है कि हमें अपने कार्यक्रम में AWT API की कार्यक्षमता की आवश्यकता है ताकि हम इसके घटकों जैसे TextFields, Buttons, Labels, List, इत्यादि का उपयोग कर सकें।
निष्कर्ष
इस ट्यूटोरियल में, हमने जावा में GUI विकास के लिए एक प्लेटफॉर्म-डिपेंडेंट API के रूप में Abstract Window Toolkit के अवलोकन पर चर्चा की। यह जावा में लगभग अप्रचलित है और इसे स्विंग और जावाएफएक्स जैसे अन्य एपीआई द्वारा प्रतिस्थापित किया जा रहा है।
हम सार विंडो टूलकिट के सभी घटकों के विवरण में नहीं गए हैं क्योंकि वे अब शायद ही कभी उपयोग किए जाते हैं। इसलिए हमने केवल फ्रेम्स, कलर इत्यादि जैसे घटकों और हेडलेस मोड पर चर्चा की जो AWT का उपयोग करके सेट किया गया है।
अगले ट्यूटोरियल में, हम जावा स्विंगिंग ट्यूटोरियल के साथ शुरू करेंगे और हम उन पर विस्तार से चर्चा करेंगे क्योंकि आज अधिकांश जावा एप्लीकेशन जीयूआई विकास के लिए स्विंग का उपयोग करते हैं।
=> यहाँ सरल जावा प्रशिक्षण श्रृंखला देखें।
अनुशंसित पाठ
- उदाहरण के साथ जावा इंटरफेस और एब्सट्रैक्ट क्लास ट्यूटोरियल
- जावा बेसिक्स: जावा सिंटैक्स, जावा क्लास और कोर जावा कॉन्सेप्ट
- जावा इंटेगर एंड जावा बिगइन्टेगर क्लास विद एग्जाम्पल्स
- जावा में कक्षाओं के प्रकार: सार, ठोस, अंतिम, स्थैतिक
- जावा परिनियोजन: जावा जार फाइल का निर्माण और निष्पादन
- उदाहरण के साथ जावा स्कैनर क्लास ट्यूटोरियल
- जावा में निजी, सार, ऐरे और स्ट्रिंग कंस्ट्रक्टर्स
- जावा क्लास बनाम ऑब्जेक्ट - जावा में क्लास और ऑब्जेक्ट का उपयोग कैसे करें