java swing tutorial container
यह व्यापक जावा स्विंग वीडियो ट्यूटोरियल GUI स्विंग फ्रेमवर्क के विभिन्न घटकों और संबंधित अवधारणाओं जैसे JPanel, JFrame, JButton, आदि की व्याख्या करता है:
हम उन अनुप्रयोगों का निर्माण करने के लिए ग्राफिकल यूजर इंटरफेस (जिसे आमतौर पर GUI कहा जाता है) का उपयोग करते हैं, जो उपयोगकर्ता के लिए एप्लिकेशन का उपयोग करने के लिए आसान बनाकर एक विज़ुअल इंटरफ़ेस है।
किसी एप्लिकेशन के लिए विज़ुअल इंटरफ़ेस होने से एप्लिकेशन को नेविगेट करना आसान हो जाता है, नियंत्रण को अधिक कुशलता से उपयोग करता है, और यह भी उपयोगकर्ता के लिए नेत्रहीन है।
मुख्य रूप से अनुप्रयोगों के लिए GUI बनाने के लिए स्विंग का उपयोग किया जाता है।
=> सभी के लिए जावा प्रशिक्षण श्रृंखला देखने के लिए यहां जाएं।
आप क्या सीखेंगे:
- जावा स्विंग पर वीडियो ट्यूटोरियल
- जावा स्विंग क्या है
- जावा स्विंग अवयव
- जावा में स्विंग कक्षाएं
- स्विंग बनाम जावाएफएक्स
- निष्कर्ष
जावा स्विंग पर वीडियो ट्यूटोरियल
जावा स्विंग क्या है
जावा कई GUI चौखटे प्रदान करता है जो विभिन्न प्रकार के GUI अनुप्रयोगों को विकसित करने में हमारी मदद करते हैं। हमने अपने पिछले ट्यूटोरियल यानी एब्सट्रैक्ट विंडो टूलकिट या एडब्ल्यूटी में से एक को देखा है। AWT जावा में सबसे पुराने GUI फ्रेमवर्क में से एक है और यह प्लेटफॉर्म पर निर्भर भी है। AWT का एक और नुकसान इसके हेवीवेट घटक हैं।
इस ट्यूटोरियल में, हम जावा में एक और GUI फ्रेमवर्क यानी 'SWING' पर चर्चा करेंगे। जावा में स्विंग फ्रेमवर्क जावा फाउंडेशन क्लासेस या आमतौर पर जेएफसी कहलाता है। JFC एक API है जो C ++ में MFC (Microsoft Foundation Classes) के समान है। JFC में स्विंग, AWT और Java2D शामिल हैं।
जावा में स्विंग फ्रेमवर्क AWT ढांचे के ऊपर बनाया गया है और इसका उपयोग AWT की तरह ही GUI एप्लिकेशन बनाने के लिए किया जा सकता है। लेकिन AWT के विपरीत, स्विंगिंग घटक हल्के वजन वाले होते हैं और प्लेटफ़ॉर्म-स्वतंत्र होते हैं।
स्विंग फ्रेमवर्क पूरी तरह से जावा में लिखा गया है। जावा में स्विंग फ्रेमवर्क ax javax.swing ’पैकेज के माध्यम से प्रदान किया जाता है। Javax.swing पैकेज में कक्षाएं। J ’अक्षर से शुरू होती हैं। तो एक javax.swing पैकेज में, हमारे पास JButton, JFrame, JTextField, JTextArea, आदि जैसी कक्षाएं होंगी।
सामान्य तौर पर, स्विंग एपीआई में javax.swing पैकेज में परिभाषित प्रत्येक नियंत्रण होता है जो AWT में मौजूद होता है। तो एक तरह से स्विंग AWT के प्रतिस्थापन के रूप में कार्य करता है। इसके अलावा, स्विंग में विभिन्न उन्नत घटक टैब्ड पैन हैं। जावा में स्विंग एपीआई MVC (मॉडल व्यू कंट्रोलर) आर्किटेक्चर को एडाप्ट करता है।
इस वास्तुकला की मुख्य विशेषताएं हैं:
- स्विंग कंपोनेंट का डेटा मॉडल का उपयोग करके दर्शाया गया है।
- यह नेत्रहीन रूप से एक दृश्य का उपयोग करके प्रस्तुत किया गया है।
- MVC आर्किटेक्चर का नियंत्रक घटक दृश्य पर उपयोगकर्ता से इनपुट पढ़ता है और फिर इन परिवर्तनों को घटक डेटा को पारित किया जाता है।
- प्रत्येक स्विंग घटक में, दृश्य और नियंत्रक को एक साथ जोड़ा जाता है जबकि मॉडल एक अलग होता है। यह स्विंग को एक प्लगेबल लुक और फील फीचर देता है।
स्विंग एपीआई की विशेषताएं नीचे संक्षेप में बताई गई हैं।
- स्विंग घटक प्लेटफार्म-स्वतंत्र हैं।
- एपीआई एक्स्टेंसिबल है।
- स्विंग घटक हल्के वजन वाले होते हैं। स्विंग घटकों को शुद्ध जावा में लिखा जाता है और अंतर्निहित सिस्टम कॉल के बजाय जावा कोड का उपयोग करके भी घटकों का प्रतिपादन किया जाता है।
- स्विंग एपीआई उन्नत नियंत्रण जैसे टैबबेडपेन, ट्री, कलरपिकर, टेबल नियंत्रण आदि का एक सेट प्रदान करता है जो कार्यक्षमता में समृद्ध हैं।
- स्विंग नियंत्रण अत्यधिक अनुकूलन योग्य हैं। इसका कारण यह है कि घटक की उपस्थिति या लुक-एंड-फील आंतरिक प्रतिनिधित्व से स्वतंत्र है और इसलिए हम इसे अपनी इच्छानुसार अनुकूलित कर सकते हैं।
- हम बस मूल्यों को बदल सकते हैं और इस प्रकार रनटाइम में लुक-एंड-फील को बदल सकते हैं।
जावा स्विंग अवयव
स्विंग में घटकों का एक बड़ा सेट है जिसे हम अपने कार्यक्रमों में शामिल कर सकते हैं और समृद्ध कार्यात्मकताओं का लाभ उठा सकते हैं, जिनके उपयोग से हम अत्यधिक अनुकूलित और कुशल GUI अनुप्रयोगों का विकास कर सकते हैं।
तो एक घटक क्या है?
एक घटक को एक नियंत्रण के रूप में परिभाषित किया जा सकता है जिसे नेत्रहीन रूप से दर्शाया जा सकता है और आमतौर पर स्वतंत्र होता है। इसे एक विशिष्ट कार्यक्षमता मिली है और इसे स्विंग एपीआई में एक व्यक्तिगत वर्ग के रूप में दर्शाया गया है।
उदाहरण के लिए, स्विंग एपीआई में क्लास जेबटन एक बटन घटक है और एक बटन की कार्यक्षमता प्रदान करता है।
एक या अधिक घटक एक समूह बनाते हैं और इस समूह को एक 'कंटेनर' में रखा जा सकता है। एक कंटेनर एक स्थान प्रदान करता है जिसमें हम घटकों को प्रदर्शित कर सकते हैं और उनके रिक्ति, लेआउट आदि का प्रबंधन भी कर सकते हैं।
जावा में, कंटेनरों को दो प्रकारों में विभाजित किया गया है जैसा कि नीचे दिखाया गया है:
जावा में स्विंग कक्षाएं
जावा में एक स्विंग एपीआई पदानुक्रम नीचे दिखाया गया है:
जैसा कि उपरोक्त पदानुक्रम से देखा गया है कि हमारे पास कंटेनर कक्षाएं हैं - फ्रेम, डायलॉग, पैनल, एप्लेट, आदि। वहाँ भी घटक कक्षाएं स्विंग एपीआई के JComponent वर्ग से व्युत्पन्न हैं। JComponent से विरासत में मिली कुछ कक्षाएं JLabel, JList, JTextBox, आदि हैं।
स्विंग एपीआई की कुछ महत्वपूर्ण कक्षाएं इस प्रकार हैं:
- JWindow: स्विंग की JWindow क्लास सीधे विंडो क्लास को इनहेरिट करती है। JWindow वर्ग डिफ़ॉल्ट लेआउट के रूप में 'BorderLayout' का उपयोग करता है।
- JPanel: JPanel JComponent क्लास का एक वंशज है और AWT क्लास पैनल के समान है और इसमें डिफ़ॉल्ट लेआउट के रूप में 'FlowLayout' है।
- JFrame: JFrame फ़्रेम वर्ग से नीचे आता है। फ़्रेम में जोड़े गए घटकों को फ़्रेम की सामग्री कहा जाता है।
- JLabel: JLabel वर्ग JComponent का एक उपवर्ग है। इसका उपयोग एप्लिकेशन में टेक्स्ट लेबल बनाने के लिए किया जाता है।
- जेबटन: स्विंग में पुश-बटन कार्यक्षमता JButton द्वारा प्रदान की गई है। हम JButton ऑब्जेक्ट के साथ एक स्ट्रिंग, एक आइकन या दोनों को जोड़ सकते हैं।
- JTextField: JTextField class एक टेक्स्ट फील्ड प्रदान करता है जिसमें हम टेक्स्ट की एक लाइन को एडिट कर सकते हैं।
जावा में JFrame
फ़्रेम, सामान्य रूप से, एक कंटेनर होता है जिसमें अन्य घटक जैसे बटन, लेबल, टेक्स्ट फ़ील्ड आदि हो सकते हैं। फ़्रेम विंडो में शीर्षक, बॉर्डर और मेनू, टेक्स्ट फ़ील्ड, बटन और अन्य घटक भी हो सकते हैं। एक आवेदन में एक फ्रेम होना चाहिए ताकि हम इसके अंदर घटकों को जोड़ सकें।
जावा स्विंग में फ़्रेम वर्ग javax.swing.JFrame में परिभाषित किया गया है। JFrame वर्ग को java.awt.Frame वर्ग विरासत में मिलता है। JFrame झूले का उपयोग करके GUI एप्लिकेशन की मुख्य विंडो की तरह है।
हम दो दृष्टिकोणों का उपयोग करके JFrame विंडो ऑब्जेक्ट बना सकते हैं:
जावा में एक सरणी में जोड़ें
# 1) JFrame वर्ग का विस्तार करके
फ़्रेम का निर्माण करने के लिए पहला दृष्टिकोण एक नया वर्ग बना रहा है। यह वर्ग javax.swing पैकेज के JFrame वर्ग से विरासत में मिला है।
निम्नलिखित कार्यक्रम इस दृष्टिकोण को लागू करता है।
import javax.swing.*; class FrameInherited extends JFrame{ //inherit from JFrame class JFrame f; FrameInherited(){ JButton b=new JButton('JFrame_Button');//create button object b.setBounds(100,50,150, 40); add(b);//add button on frame setSize(300,200); setLayout(null); setVisible(true); } } public class Main { public static void main(String() args) { new FrameInherited(); //create an object of FrameInherited class } }
आउटपुट:
# 2) JFrame क्लास को इंस्टेंट करके
import javax.swing.*; public class Main { public static void main(String() args) { JFrame f=new JFrame('JFrameInstanceExample');//create a JFrame object JButton b=new JButton('JFrameButton');//create instance of JButton b.setBounds(100,50,150, 40);//dimensions of JButton object f.add(b);//add button in JFrame f.setSize(300,200);//set frame width = 300 and height = 200 f.setLayout(null);//no layout manager specified f.setVisible(true);//make the frame visible } }
आउटपुट:
उपरोक्त कार्यक्रम में, हमने JFrame वर्ग का एक उदाहरण बनाकर JFrame वर्ग से एक फ्रेम बनाया है।
जावा में जेपीनेल
एक पैनल एक घटक है जो एक फ्रेम विंडो के अंदर निहित है। एक फ्रेम में इसके अंदर एक से अधिक पैनल के घटक हो सकते हैं और प्रत्येक पैनल घटक में कई अन्य घटक होते हैं।
आसान शब्दों में, हम फ्रेम को विभाजित करने के लिए पैनलों का उपयोग कर सकते हैं। प्रत्येक पैनल अपने अंदर कई अन्य घटकों को समूहित करता है। दूसरे शब्दों में, हम फ्रेम के अंदर घटकों को व्यवस्थित करने के लिए पैनलों का उपयोग करते हैं।
पैनल घटक को लागू करने वाली स्विंग एपीआई क्लास जेपीनेल है। JPanel वर्ग JComponent से विरासत में मिला है और इसका डिफ़ॉल्ट लेआउट के रूप में FlowLayout है।
निम्नलिखित कार्यक्रम javax.swing पैकेज कक्षाओं का उपयोग करके एक फ्रेम में एक पैनल कंटेनर के निर्माण को दर्शाता है।
import javax.swing.*; class JPanelExample { JPanelExample(){ JFrame frame = new JFrame('Panel Example'); //create a frame JPanel panel = new JPanel(); //Create JPanel Object panel.setBounds(40,70,100,100); //set dimensions for Panel JButton b = new JButton('ButtonInPanel'); //create JButton object b.setBounds(60,50,80,40); //set dimensions for button panel.add(b); //add button to the panel frame.add(panel); //add panel to frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JPanelExample(); //create an object of FrameInherited class } }
आउटपुट:
यहाँ हमारे पास एक फ़्रेम है। फ्रेम के अंदर, हम एक पैनल बनाते हैं। फिर पैनल के अंदर, हम एक बटन बनाते हैं। इस तरह हम अन्य घटकों को धारण करने के लिए एक पैनल का उपयोग कर सकते हैं।
जावा में JTextArea
TextArea एक संपादन योग्य पाठ क्षेत्र को परिभाषित करता है। इसकी कई लाइनें हो सकती हैं। टेक्स्ट क्षेत्र को परिभाषित करने वाला स्विंग क्लास JTextArea है और यह JTextComponent वर्ग को विरासत में मिला है।
सार्वजनिक वर्ग JTextArea JTextComponent का विस्तार करता है
JTextArea वर्ग में 4 निर्माता हैं जो हमें विभिन्न विकल्पों के साथ एक पाठ क्षेत्र बनाने की अनुमति देते हैं।
- JTextArea (): डिफ़ॉल्ट निर्माता। एक खाली पाठ क्षेत्र बनाएँ।
- JTextArea (स्ट्रिंग s): डिफ़ॉल्ट मान के रूप में एक textarea बनाता है।
- JTextArea (इंट पंक्ति, इंट कॉलम): एक निर्दिष्ट पंक्ति x स्तंभ के साथ एक पाठ क्षेत्र बनाता है।
- JTextArea (स्ट्रिंग s, int पंक्ति, int कॉलम): निर्दिष्ट पंक्ति x कॉलम और डिफ़ॉल्ट मान s के साथ एक टेक्स्ट 2a बनाता है।
निम्न जावा प्रोग्राम स्विंग में जेटटेक्आरे घटक का एक उदाहरण दिखाता है।
import javax.swing.*; class JTextAreaExample { JTextAreaExample(){ JFrame frame= new JFrame(); JTextArea t_area=new JTextArea('JTextArea example'); //create object of JTextArea t_area.setBounds(10,30, 150,100); //set its dimensions frame.add(t_area); //add it to the frame frame.setSize(200,200); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JTextAreaExample(); //create an object of TextAreaExample class } }
आउटपुट:
जावा में JButton
एक बटन एक घटक है जिसका उपयोग नाम या लेबल के साथ पुश बटन बनाने के लिए किया जाता है। स्विंग में, लेबल बटन बनाने वाला वर्ग JButton है। JButton ने AbstractButton वर्ग को विरासत में दिया है। हम ActionListener ईवेंट को बटन पर जोड़ सकते हैं ताकि धक्का लगने पर वह कुछ कार्रवाई कर सके।
जावा झूलों में JButton के लिए एक उदाहरण कार्यक्रम लागू करें।
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('JButton Example'); //create JFrame object JButton button=new JButton('Button'); //Create a JButton object button.setBounds(50,50,75,35); //set dimensions for button frame.add(button); //add button to the frame frame.setSize(250,200); frame.setLayout(null); frame.setVisible(true); } }
आउटपुट:
जावा में JList
एक सूची में कई टेक्स्ट आइटम होते हैं। उपयोगकर्ता या तो एक बार में एक आइटम या कई आइटम का चयन कर सकते हैं। स्विंग एपीआई में सूची को लागू करने वाला वर्ग JList है। JList, JComponent वर्ग का वंशज है।
नीचे दिए गए JList वर्ग के निर्माता हैं।
- JList (): डिफ़ॉल्ट निर्माता जो एक रिक्त, केवल-पढ़ने के लिए सूची बनाता है।
- JList (सरणी (सूची सूची)): एक JList बनाएँ जिसमें शुरुआत में array listem के तत्व हों।
- JList (ListModel dataModel): निर्दिष्ट मॉडल डेटामॉडल के तत्वों के साथ एक सूची बनाता है।
JList घटक का एक सरल प्रदर्शन नीचे दिया गया है।
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame= new JFrame('JList Example'); //create a list model and add items to it DefaultListModel colors = new DefaultListModel<>(); colors.addElement('Red'); colors.addElement('Green'); colors.addElement('Blue'); //create JList object and add listModel to it JList colorsList = new JList<>(colors); colorsList.setBounds(100,100, 75,50); frame.add(colorsList); //add list to the frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
आउटपुट:
उपरोक्त कार्यक्रम में, हम पहले एक लिस्ट को परिभाषित करते हैं जिसमें उसमें रंग प्रविष्टियाँ होती हैं। फिर हम एक JList ऑब्जेक्ट बनाते हैं और इसमें listModel को जोड़ते हैं। इसके बाद, JList ऑब्जेक्ट को फ्रेम ऑब्जेक्ट में जोड़ा जाता है जो तब प्रदर्शित होता है।
जावा में JComboBox
JCombobox वर्ग उन विकल्पों की एक सूची दिखाता है जिनसे उपयोगकर्ता एक विकल्प का चयन कर सकता है। चयनित विकल्प सबसे ऊपर है। JComboBox JComponent वर्ग से निकला है।
JComboBox वर्ग द्वारा प्रदान किए गए निर्माण निम्नलिखित हैं:
- JComboBox (): डिफ़ॉल्ट कंस्ट्रक्टर जो डिफ़ॉल्ट डेटा मॉडल के साथ एक कॉम्बो बॉक्स बनाता है।
- JComboBox (ऑब्जेक्ट () आइटम): यह निर्माता दिए गए सरणी आइटम के तत्वों के रूप में एक ComboBox आइटम बनाता है।
- JComboBox (वेक्टर आइटम): यह कंस्ट्रक्टर दिए गए वेक्टर के तत्वों को पढ़ता है और इन वस्तुओं के साथ एक कॉम्बो बॉक्स का निर्माण करता है।
JComboBox क्लास में आइटम जोड़ने / हटाने, एक्शन लिस्टनर, आइटम लिस्टनर इत्यादि को जोड़ने के तरीके भी दिए गए हैं।
निम्न उदाहरण जावा में JComboBox कार्यान्वयन को प्रदर्शित करता है।
import javax.swing.*; class ComboBoxExample { JFrame frame; ComboBoxExample(){ frame=new JFrame('ComboBox Example'); //create a string array String country()={'India','SriLanka','Singapore','Maldives','SeyChelles'}; //create a combobox object with given string array JComboBox countries=new JComboBox(country); countries.setBounds(50, 50,90,20); frame.add(countries); //add it to the frame frame.setLayout(null); frame.setSize(200,300); frame.setVisible(true); } } public class Main { public static void main(String arg()) { new ComboBoxExample(); } }
आउटपुट:
जावा में JSlider
एक स्लाइडर हमें मूल्यों की एक विशिष्ट श्रेणी का चयन करने की अनुमति देता है। जावा स्विंग एपीआई में, JSlider वह वर्ग है जो स्लाइडर को लागू करने के लिए उपयोग किया जाता है।
JSlider वर्ग द्वारा प्रदान किए गए निर्माता निम्नलिखित हैं।
c ++ में int करने के लिए char
- JSlider (): एक डिफ़ॉल्ट कंस्ट्रक्टर जो प्रारंभिक मूल्य के रूप में एक स्लाइडर बनाता है जिसमें 50 और रेंज 0 -100 होता है।
- JSlider (इंटेंसिव ओरिएंटेशन): यह कंस्ट्रक्टर एक स्लाइडर को ऊपर की तरह बनाता है लेकिन एक निर्दिष्ट अभिविन्यास के साथ। अभिविन्यास मूल्य या तो JSlider.HORIZONTAL या JSlider.VERTICAL हो सकता है।
- JSlider (int min, int max): इस कंस्ट्रक्टर का उपयोग दिए गए न्यूनतम और अधिकतम का उपयोग करके एक क्षैतिज स्लाइडर बनाने के लिए किया जाता है।
- JSlider (int min, int max, int value): यह निर्माता एक स्लाइडर बनाता है जो कि न्यूनतम, अधिकतम और मान के निर्दिष्ट मूल्य के साथ क्षैतिज होता है।
- JSlider (इंटेंस ओरिएंटेशन, इंट मिन, इंट मैक्स, इंट वैल्यू): यह कंस्ट्रक्टर एक स्लाइडर का निर्माण निर्दिष्ट अभिविन्यास, न्यूनतम, अधिकतम और मूल्य के साथ करता है।
निम्नलिखित कार्यक्रम जावा में टिक्सेस के साथ JSlider प्रदर्शित करता है। यह कार्यक्रम JSLider वर्ग द्वारा समर्थित विधियों के उपयोग को भी दर्शाता है।
import javax.swing.*; class SliderExample extends JFrame { public SliderExample() { //create a slider object JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 25); //set major and minor ticks for the slider slider.setMinorTickSpacing(2); slider.setMajorTickSpacing(10); slider.setPaintTicks(true); slider.setPaintLabels(true); JPanel panel = new JPanel(); panel.add(slider); //add slider to the panel add(panel); } } public class Main{ public static void main(String s()) { SliderExample frame=new SliderExample(); frame.pack(); frame.setVisible(true); } }
आउटपुट:
जावा में इवेंट हैंडलिंग
एक घटना को एक वस्तु की स्थिति के परिवर्तन के रूप में परिभाषित किया जा सकता है। GUI के दृष्टिकोण से, एक घटना तब होती है जब अंतिम उपयोगकर्ता GUI घटकों के साथ इंटरैक्ट करता है। GUI में ट्रिगर होने वाली घटनाओं में बटन पर क्लिक करना, स्क्रॉल करना, सूची आइटम का चयन करना, पाठ बदलना आदि शामिल हो सकते हैं।
ऊपर सूचीबद्ध जीयूआई में होने वाली घटना ज्यादातर अग्रभूमि घटनाएँ हैं। हमारे पास कुछ बैकग्राउंड इवेंट भी हो सकते हैं जैसे बैकग्राउंड ऑपरेशन पूरा होना, टाइमर का समय समाप्त होना आदि
इवेंट हैंडलिंग एक ऐसा तंत्र है जिसके माध्यम से एक घटना होने पर एक कार्रवाई की जाती है। इसके लिए, हम एक विधि को परिभाषित करते हैं, जिसे एक इवेंट हैंडलर भी कहा जाता है जिसे एक ईवेंट होने पर कहा जाता है। जावा एक मानक तंत्र का उपयोग करता है जिसे 'डेलिगेशन इवेंट मॉडल' कहा जाता है और साथ ही घटनाओं को संभालने के लिए।
प्रतिनिधि ईवेंट मॉडल में निम्न शामिल हैं:
# 1) स्रोत: घटना का स्रोत वस्तु है। जिस वस्तु पर कोई घटना घटती है, वह स्रोत है और स्रोत घटना हैंडलर को घटना के बारे में जानकारी भेजने के लिए जिम्मेदार है।
# 2) श्रोता: श्रोता कुछ भी नहीं है लेकिन एक घटना होने पर कार्रवाई करने के लिए जिम्मेदार इवेंट हैंडलर। जावा में, एक श्रोता एक ऐसी वस्तु है जो किसी घटना पर प्रतीक्षा करता है। एक बार जब घटना होती है, तो श्रोता घटना को संसाधित करता है।
आवश्यकता श्रोता को वस्तु के साथ पंजीकृत करने की है ताकि जब कोई घटना घटित हो, तो श्रोता उसे संसाधित कर सके।
उदाहरण के लिए,एक बटन क्लिक घटना के लिए, हमारे पास चरणों का अनुक्रम हो सकता है।
- उपयोगकर्ता बटन पर क्लिक करता है जो एक क्लिक ईवेंट उत्पन्न करता है।
- उपयुक्त ईवेंट क्लास ऑब्जेक्ट बनाया जाता है और स्रोत और ईवेंट डेटा को इस ऑब्जेक्ट को पास किया जाता है।
- यह ईवेंट ऑब्जेक्ट तब ऑब्जेक्ट के साथ पंजीकृत श्रोता वर्ग को दिया जाता है।
- श्रोता अमल और वापसी करता है।
अब जावा द्वारा प्रदान किए गए कुछ श्रोताओं की चर्चा करते हैं।
जावा में ActionListener
एक्शनलिस्ट एक बटन या मेनू आइटम के लिए श्रोता है। जब हम एक बटन पर क्लिक करते हैं, तो शामिल होने वाला बटन श्रोता एक्शनलिस्ट होता है। ActionListener को ActionEvent में अधिसूचित किया गया है।
Java.awt.an इवेंट पैकेज ActionListener इंटरफ़ेस को परिभाषित करता है। इस इंटरफ़ेस में केवल एक ही विधि कार्रवाई है विकृत ()।
सार्वजनिक अमूर्त शून्य कार्रवाईअनुकूलित (ActionEvent e);
जब एक बटन की तरह पंजीकृत घटक पर क्लिक किया जाता है, तो एक्शनपर्फ़र्ड () विधि स्वचालित रूप से लागू होती है।
ActionListener को प्रोग्राम में शामिल करने के लिए सबसे आम तरीका ActionListener इंटरफ़ेस को लागू करना और उसके बाद ActionPerformed () पद्धति को लागू करना है।
ActionListener वर्ग को लागू करने के चरण निम्नानुसार हैं:
# 1) इंटरफ़ेस ActionListerner लागू करें।
सार्वजनिक वर्ग ActionListenerImpl कार्यान्वयन ActionListener
# 2) इस श्रोता के साथ घटक को पंजीकृत करें। यदि बटन एक घटक है जिसे हम श्रोता के साथ पंजीकृत करना चाहते हैं तो हम इसे निम्नानुसार पंजीकृत करेंगे:
button.addActionListener (instOfListenerclass);
# 3) क्रिया को लागू / ओवरराइड करें () विधि।
public void actionPerformed (ActionEvent e){ //code to perform action }
इसलिए उपरोक्त चरणों का उपयोग करके, हम किसी भी घटना को GUI घटक के साथ जोड़ सकते हैं।
निम्न उदाहरण एक बटन प्रदर्शित करता है ActionListener का उपयोग करके क्लिक करें घटना।
import javax.swing.*; import java.awt.event.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('Button Click Example'); final JTextField text_field=new JTextField(); //JTextField object text_field.setBounds(50,100, 150,20); JButton click_button=new JButton('Click Me!!!'); //JButton object click_button.setBounds(20,50,75,30); click_button.addActionListener(new ActionListener(){ //add an event and take action public void actionPerformed(ActionEvent e){ text_field.setText('You Clicked the button'); } }); //add button and textfield to the frame frame.add(click_button);frame.add(text_field); frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
आउटपुट:
उपरोक्त कार्यक्रम एक ActionListener घटना को लागू करता है। घटना बटन क्लिक की घटना है और इसके साथ, हमने एक एक्शन लिस्टनर को संबद्ध किया है जो बटन को क्लिक करने पर पाठ क्षेत्र में पाठ प्रदर्शित करता है।
KeyListener जावा में
जब भी कुंजी की स्थिति में कोई परिवर्तन होता है, तो एक KeyListener को सूचित किया जाता है। ActionListener की तरह, KeyListener भी java.awt.event पैकेज में पाई जाती है।
KeyListener इंटरफ़ेस निम्नलिखित तरीके प्रदान करता है:
सार्वजनिक सार शून्य keyPressed (KeyEvent e);
सार्वजनिक अमूर्त शून्य keyReleased (KeyEvent e);
सार्वजनिक सार शून्य keyTyped (KeyEvent e);
हमें प्रमुख घटनाओं को घटक के साथ जोड़ने के लिए उपरोक्त तरीकों को लागू करने की आवश्यकता है। हम जावा में झूलों का उपयोग करके एक KeyListener उदाहरण को लागू करने के लिए उपयोगकर्ता पर छोड़ देते हैं।
जावा में स्विंग लेआउट
जब हम एक कंटेनर में विभिन्न घटकों की व्यवस्था करते हैं, तो हम कहते हैं कि हम उन घटकों को बिछा रहे हैं। इसलिए एक लेआउट को एक कंटेनर में घटकों की स्थिति के रूप में परिभाषित किया जा सकता है।
जब तक कम घटक होते हैं, तब तक उन्हें मैन्युअल रूप से ड्रैग-ड्रॉप द्वारा रखा जा सकता है। लेकिन बड़ी संख्या में घटकों को व्यवस्थित करना मुश्किल हो जाता है। इस समय, जावा का लेआउट मैनेजर हमारी सहायता के लिए आता है।
जीएआई अनुप्रयोगों में घटकों के लेआउट के लिए LayoutManager जिम्मेदार है। LayoutManager एक इंटरफ़ेस है और इसे सभी लेआउट प्रबंधक वर्गों द्वारा कार्यान्वित किया जाता है। जावा निम्नलिखित लेआउट प्रबंधक कक्षाएं प्रदान करता है।
लेआउट प्रबंधक | विवरण |
---|---|
javax.swing.GroupLayout | घटकों को समूहित करता है और फिर उन्हें कंटेनर में रखता है। |
java.awt.BorderLayout | केंद्र, पूर्व, पश्चिम, दक्षिण, उत्तर पांच दिशाओं में फिट करने के लिए घटक रखे गए हैं। |
java.awt.FlowLayout | यह डिफ़ॉल्ट लेआउट है। यह दिशात्मक प्रवाह में घटकों को देता है। |
java.awt.GridLayout | आयताकार ग्रिड में घटकों को व्यवस्थित करता है। |
javax.swing.BoxLayout | घटकों को एक बॉक्स में व्यवस्थित किया जाता है। |
java.awt.CardLayout | प्रत्येक घटक को डेक में एक कार्ड के रूप में देखा जाता है और एक समय में केवल एक घटक दिखाई देता है। |
java.awt.GridBagLayout | घटकों को लंबवत, क्षैतिज रूप से या यहां तक कि उनके आधार रेखा के साथ व्यवस्थित करता है। घटकों को समान आकार का नहीं होना चाहिए। |
javax.swing.ScrollPaneLayout | JScrollPane वर्ग द्वारा उपयोग किया जाता है और स्क्रॉल करने योग्य कंटेनरों में घटकों की व्यवस्था के लिए जिम्मेदार है। |
javax.swing.SpringLayout आदि। | घटकों आदि के बीच क्षैतिज और ऊर्ध्वाधर दूरी जैसे बाधाओं का एक सेट प्रदान किया जाता है और इन बाधाओं के सेट के अनुसार घटकों को व्यवस्थित किया जाता है। |
इस ट्यूटोरियल में हम केवल FlowLayout और GridLayout पर चर्चा करेंगे।
FlowLayout जावा में
FlowLayout एक प्रवाह दिशा में घटकों की व्यवस्था करता है, एक के बाद एक। यह पैनल और एप्लेट जैसे कंटेनरों के लिए डिफ़ॉल्ट लेआउट है।
FlowLayout प्रबंधक का प्रतिनिधित्व करता है कि जावा में FlowLayout वर्ग में निम्नलिखित फ़ील्ड और निर्माता होते हैं।
फ्लोयलेट वर्ग के क्षेत्र
- सार्वजनिक स्थिर अंतिम इंट कारोबार
- सार्वजनिक स्थैतिक अंतिम इंट ट्रेनिंग
- सार्वजनिक स्थिर अंतिम int LEFT
- सार्वजनिक स्थिर अंतिम इंट राइट
- सार्वजनिक स्थिर अंतिम int केंद्र
उपरोक्त फ़ील्ड उन पदों को परिभाषित करती हैं जिन पर घटकों को रखा जाएगा या संरेखित किया जाएगा।
FlowLayout वर्ग के निर्माता
- फ़्लो लाइआउट (): यह एक डिफ़ॉल्ट कंस्ट्रक्टर है। यह कंस्ट्रक्टर क्षैतिज और ऊर्ध्वाधर दिशा में 5 इकाइयों के डिफ़ॉल्ट अंतराल के साथ केंद्रीय रूप से संरेखित घटकों वाला एक प्रवाह लेआउट बनाता है।
- फ़्लो लाइआउट (int align): यह निर्माता निर्दिष्ट संरेखण मूल्य के साथ और 5 इकाइयों के क्षैतिज और ऊर्ध्वाधर अंतर के साथ एक प्रवाह लेआउट बनाता है।
- फ़्लो लाइआउट (int align, int hgap, int vgap): निर्दिष्ट संरेखण मूल्य और क्षैतिज और ऊर्ध्वाधर अंतर के साथ एक प्रवाह लेआउट बनाता है।
नीचे दिए गए जावा में FlowLayout का एक उदाहरण है।
import javax.swing.*; import java.awt.*; class FlowLayoutClass { JFrame frame; FlowLayoutClass() { frame = new JFrame('FlowLayout Example'); //create button components JButton b1 = new JButton('A'); JButton b2 = new JButton('B'); JButton b3 = new JButton('C'); JButton b4 = new JButton('D'); JButton b5 = new JButton('E'); //add components to the frame frame.add(b1); frame.add(b2); frame.add(b3); frame.add(b4); frame.add(b5); //set layout as 'FlowLayout.CENTER' frame.setLayout(new FlowLayout(FlowLayout.CENTER)); //setting flow layout of right alignment frame.setSize(300, 300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new FlowLayoutClass(); } }
आउटपुट:
GridLayout जावा में
GridLayout का उपयोग करके हम एक आयताकार ग्रिड फैशन में घटकों को लेआउट कर सकते हैं यानी प्रत्येक घटक प्रत्येक आयत में व्यवस्थित होता है।
ग्रिडलाइउट क्लास के निर्माता
- जाली का नक्शा (): डिफ़ॉल्ट कंस्ट्रक्टर जो एक पंक्ति में एक घटक प्रति एक कॉलम वाले ग्रिड लेआउट को उत्पन्न करता है।
- ग्रिडलाइउट (इंट रो, इंट कॉलम): यह कंस्ट्रक्टर एक ग्रिड लेआउट बनाता है निर्दिष्ट पंक्तियों और स्तंभों के साथ। घटकों के बीच कोई अंतर नहीं है।
- ग्रिडलाइउट (इंट रो, इंट कॉलम, इंट हगप, इंट वगप): इस कंस्ट्रक्टर का उपयोग करते हुए, हम निर्दिष्ट पंक्तियों और स्तंभों और क्षैतिज और ऊर्ध्वाधर अंतराल के साथ एक ग्रिड लेआउट उत्पन्न करते हैं।
निम्न उदाहरण जावा में GridLayout को लागू करता है।
import javax.swing.*; import java.awt.*; class GridLayoutClass { JFrame frame; GridLayoutClass() { frame=new JFrame('GridLayout Example'); //create components to be laid out as per GridLayout JButton b1=new JButton('P'); JButton b2=new JButton('Q'); JButton b3=new JButton('R'); JButton b4=new JButton('S'); JButton b5=new JButton('T'); JButton b6=new JButton('U'); JButton b7=new JButton('V'); JButton b8=new JButton('W'); JButton b9=new JButton('X'); //add components to the frame frame.add(b1);frame.add(b2);frame.add(b3);frame.add(b4);frame.add(b5); frame.add(b6);frame.add(b7);frame.add(b8);frame.add(b9); //set frame layout to GridLayout of 3 rows and 3 columns frame.setLayout(new GridLayout(3,3)); frame.setSize(300,300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new GridLayoutClass(); } }
आउटपुट:
जावा में सेटबाउंड्स
यदि हम लेआउट विषय से पहले इस ट्यूटोरियल में प्रोग्रामिंग उदाहरणों की जांच करते हैं, तो हम देख सकते हैं कि हमने लेआउट को इन उदाहरणों में सेट किया है (setLayout (नल))। हमने देखा है कि जब हम अपने कार्यक्रम में लेआउट प्रबंधकों का उपयोग करते हैं, तो वे स्वचालित रूप से घटकों को स्थिति देते हैं।
जब लेआउट प्रबंधकों का उपयोग नहीं किया जाता है, तो हम घटक के आकार और स्थिति के लिए सेटबाउंड विधि का उपयोग कर सकते हैं। तो विधि सेटबाउंड्स का उपयोग घटक को मैन्युअल रूप से करने के लिए किया जाता है और आकार भी निर्धारित किया जाता है।
सेटबाउंड विधि का सामान्य सिंटैक्स निम्नानुसार है:
सेटबाउंड्स (इंट एक्स-कोऑर्डिनेट, इंट वाई - कोऑर्डिनेट, इंट चौड़ाई, इंट हाइट)
आइए अब SetBounds विधि का एक उदाहरण लागू करें।
import javax.swing.*; public class Main { public static void main(String arg()) { JFrame frame = new JFrame('SetBounds Method Test'); frame.setSize(375, 250); // Set layout as null frame.setLayout(null); // Create a Button JButton button = new JButton('ButtonWithSetBounds'); // Set position and size of a button using setBounds button.setBounds(80,30,200,40); frame.add(button); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
आउटपुट:
पीसी के लिए सबसे अच्छा ऑपरेटिंग सिस्टम क्या है
उपरोक्त कार्यक्रम में, हमारे पास एक बटन घटक है। हमने कोई लेआउट सेट नहीं किया है, लेकिन हमने इसकी स्थिति और आयाम सेट करने के लिए सेटबाउंड विधि का उपयोग किया है।
स्विंग बनाम जावाएफएक्स
जोरों | JavaFX |
---|---|
GUI घटक बनाने के लिए स्विंग एक API प्रदान करता है। | JavaFX स्क्रीन बिल्डर के साथ जुड़ी स्क्रिप्ट और तेज़ UI विकास प्रदान करता है। |
भविष्य के संस्करणों में स्विंग में कोई नई कार्यक्षमता नहीं जोड़ी जाएगी। | JavaFX समृद्ध कार्यक्षमता प्रदान करता है और भविष्य के संस्करणों में अधिक सुविधाओं के लिए क्षमता रखता है। |
हम स्विंग एपीआई का उपयोग करके सभी मानक घटक बना सकते हैं। | JavaFX हमें उन्नत रूप और अनुभव का उपयोग करके समृद्ध GUI घटक बनाने की अनुमति देता है। |
बड़ी संख्या में घटक स्विंग में मौजूद हैं। | JavaFX के पास तुलनात्मक रूप से कम घटक हैं। |
स्विंग एक पूरी तरह से यूआई लाइब्रेरी है। | जावाएफएक्स समृद्ध यूआई घटकों के साथ एक नया और आगामी एपीआई है। |
स्विंग में MVC सपोर्ट है। | JavaFX MVC पैटर्न को लगातार सपोर्ट करता है। |
बार बार पूछे जाने वाले प्रश्न
Q # 1) क्या स्विंग अभी भी जावा में उपयोग किया जाता है?
उत्तर: हां, अभी भी जावा में स्विंग का उपयोग किया जा रहा है और वह भी भारी। कभी-कभी इसका उपयोग AWT के पूर्ण प्रतिस्थापन के रूप में किया जाता है। कभी-कभी इसका उपयोग AWT घटकों में से कुछ के साथ भी किया जाता है। यह नवीनतम JavaFX के साथ भी प्रयोग किया जाता है। इसलिए स्विंग अभी भी उपयोग किया जाता है और आने वाले लंबे समय के लिए उपयोग किया जाएगा।
Q # 2) जावा स्विंग कैसे काम करता है?
उत्तर: जावा में स्विंग AWT ढांचे के ऊपर लिखा गया है। इसलिए AWT के ईवेंट हैंडलिंग पूरी तरह से स्विंग से विरासत में मिला है। स्विंग भी बड़ी संख्या में घटक प्रदान करता है जिसका उपयोग हम कुशल GUI अनुप्रयोगों को विकसित करने के लिए कर सकते हैं।
Q # 3) क्या स्विंग MVC का अनुसरण करता है?
उत्तर: स्विंग एपीआई में MVC सपोर्ट है। मॉडल घटक के डेटा का प्रतिनिधित्व करता है। स्विंग घटक में एक अलग तत्व होता है जिसे मॉडल कहा जाता है जबकि नियंत्रक और दृश्य UI तत्वों में एक साथ क्लब किए जाते हैं। इस क्लबिंग से झूले को एक प्लगेबल लुक और फील होता है।
Q # 4) क्या JavaFX स्विंग से बेहतर है?
उत्तर: स्विंग लंबे समय से चारों ओर है और अधिक परिपक्व आईडीई समर्थन है। इसमें घटकों का एक बहुत बड़ा पुस्तकालय भी था। जावाएफएक्स तुलनात्मक रूप से नया है और इसमें घटकों की एक छोटी लाइब्रेरी है लेकिन अधिक सुसंगत अपडेट और लगातार एमवीसी समर्थन के साथ। इस प्रकार यह निर्भर करता है कि जावाएफएक्स आगे कैसे विकसित होता है और अधिक सुविधाएँ प्रदान करता है।
Q # 5) कौन सा बेहतर है AWT या स्विंग?
उत्तर: स्विंग को AWT के ऊपर बनाया गया है और AWT की तुलना में UI घटकों का एक समृद्ध और बड़ा सेट प्रदान करता है। स्विंग घटक भी AWT घटकों के खिलाफ अपने रूप और महसूस कर सकते हैं जो ऑपरेटिंग सिस्टम का एक रूप और अनुभव लेते हैं।
स्विंग घटक AWT से तेज हैं। ये सभी कारक स्विंग को AWT से बेहतर बनाते हैं।
जावा स्विंग के बारे में अधिक
जब आप एक एप्लिकेशन बनाते हैं, तो शुरू में आपके पास एक आधार कंटेनर होना चाहिए और आपको कंटेनर में बटन और टेक्स्ट फ़ील्ड जैसे आवश्यक घटक जोड़ना होगा।
और जब आप किसी भी क्षेत्र पर किसी भी ऑपरेशन को क्लिक करते हैं या करते हैं, तो घटना घटित होती है और आपका कोड घटनाओं को सुनना चाहिए और घटना को भी संभालना चाहिए।
झूला कंटेनर
एक कंटेनर एक अनुप्रयोग के लिए एक मूल तत्व है। अन्य सभी घटकों को उस मूल में जोड़ा जाता है और यह एक पदानुक्रम बनाता है।
तीन कंटेनर कक्षाएं हैं:
- जेफ्रेम
- JDialog
- JApplet
JFrame का उपयोग कर कंटेनर डेमो:
import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; public class ContainerDemo { public static void main(String() args) { JFrame baseFrame =new JFrame(); baseFrame.setTitle('Base Container'); JPanel contentPane=new JPanel(); contentPane.setBackground(Color.pink); baseFrame.setSize(400, 400); baseFrame.add(contentPane); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); } }
जब आप उपरोक्त प्रोग्राम चलाते हैं, तो आपको नीचे आउटपुट मिलेगा।
अवयव
JComponent class एक स्विंग में सभी घटकों के लिए एक बेस क्लास है।
अक्सर उपयोग किए जाने वाले घटकों में शामिल हैं,
- जे बटन
- JTextField
- JTextArea
- JRadioButton
- JComboBox आदि।
इन सभी घटकों को कंटेनर में जोड़ा जाना चाहिए यदि नहीं, तो यह एप्लिकेशन पर दिखाई नहीं देगा।
उदाहरण:
बटन उदाहरण बनाने के लिए,
जेबटन क्लिकबटन = नया जेबटन ();
कंटेनर में बटन जोड़ने के लिए,
myFrame.add ();
घटना से निपटना
सभी एप्लिकेशन बटन क्लिक, माउस क्लिक, उपयोगकर्ता पाठ इनपुट आदि जैसी घटनाओं से संचालित होते हैं। जब घटना होती है, तो आपको एक श्रोता जोड़ना होगा और स्रोत इवेंट ऑब्जेक्ट को पास करना होगा।
एक आंतरिक वर्ग के साथ, आप अपने तर्क के साथ घटना को संभाल सकते हैं जैसा कि नीचे दिखाया गया है।
public class ContainerDemo { public void createApp() { JFrame baseFrame =new JFrame(); JPanel contentPane=new JPanel(); baseFrame.setTitle('Base Container'); baseFrame.setSize(400, 400); baseFrame.add(contentPane); JButton demoButton =new JButton('click'); demoButton.setBounds(100,95,95,30); JTextArea result =new JTextArea(); result.setBounds(130,140,95,30); contentPane.add(demoButton); contentPane.add(result); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); demoButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { result.setText('button clicked'); } }); } public static void main(String() args) { ContainerDemo c =new ContainerDemo(); c.createApp(); } }
निष्कर्ष
इस ट्यूटोरियल में, हमने GUI अनुप्रयोगों के निर्माण के लिए जावा द्वारा प्रदान की गई स्विंग एपीआई के साथ आधार को छुआ है। हमने प्रमुख स्विंग कंटेनरों और घटकों और उनके कार्यान्वयन पर चर्चा की है।
हमने स्विंग में इवेंट हैंडलिंग पर भी चर्चा की है। यद्यपि ईवेंट हैंडलिंग तंत्र AWT का है, फिर भी स्विंग एक प्रभावी तरीके से घटनाओं को लागू करता है। फिर हमने स्विंग एपीआई द्वारा प्रदान किए गए विभिन्न लेआउट प्रबंधकों पर चर्चा की जो हमें स्विंग जीयूआई अनुप्रयोगों में विभिन्न घटकों को लेआउट या व्यवस्थित करने की अनुमति देते हैं।
=> यहाँ बिल्कुल सही जावा प्रशिक्षण गाइड देखें।
अनुशंसित पाठ
- उदाहरणों के साथ जावा परावर्तन ट्यूटोरियल
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा कलेक्शंस फ्रेमवर्क (JCF) ट्यूटोरियल
- जावा में एक्सेस संशोधक - उदाहरण के साथ ट्यूटोरियल
- स्ट्रिंग स्ट्रिंग बफर और स्ट्रिंग बिल्डर ट्यूटोरियल के साथ जावा स्ट्रिंग
- जावा प्रोग्रामिंग भाषा का परिचय - वीडियो ट्यूटोरियल