स्विंगिंग - इवेंट हैंडलिंग

इस अध्याय में, आप ईवेंट्स, उसके प्रकारों के बारे में जानेंगे और यह भी सीखेंगे कि किसी ईवेंट को कैसे हैंडल किया जाए। उदाहरण को बेहतर समझ के लिए अध्याय के अंत में प्रदान किया गया है।

एक घटना क्या है?

किसी वस्तु की स्थिति में परिवर्तन के रूप में जाना जाता है Event, यानी, ईवेंट स्रोत की स्थिति में परिवर्तन का वर्णन करता है। घटनाक्रम ग्राफिकल यूजर इंटरफेस घटकों के साथ उपयोगकर्ता बातचीत के परिणामस्वरूप उत्पन्न होते हैं। उदाहरण के लिए, एक बटन पर क्लिक करना, माउस को ले जाना, कीबोर्ड के माध्यम से एक चरित्र में प्रवेश करना, सूची से एक आइटम का चयन करना और पृष्ठ को स्क्रॉल करना ऐसी गतिविधियां हैं जो किसी घटना के कारण होती हैं।

घटना के प्रकार

घटनाओं को मोटे तौर पर दो श्रेणियों में वर्गीकृत किया जा सकता है -

  • Foreground Events- इन घटनाओं के लिए उपयोगकर्ता के सीधे संपर्क की आवश्यकता होती है। वे ग्राफिकल यूजर इंटरफेस में ग्राफिकल घटकों के साथ बातचीत करने वाले व्यक्ति के परिणामों के रूप में उत्पन्न होते हैं। उदाहरण के लिए, एक बटन पर क्लिक करना, माउस को हिलाना, कीबोर्ड के माध्यम से एक चरित्र में प्रवेश करना, सूची से एक आइटम का चयन करना, पृष्ठ को स्क्रॉल करना आदि।

  • Background Events- इन घटनाओं को अंतिम उपयोगकर्ता की सहभागिता की आवश्यकता होती है। ऑपरेटिंग सिस्टम में व्यवधान, हार्डवेयर या सॉफ्टवेयर की विफलता, टाइमर की समाप्ति, और ऑपरेशन पूरा होना पृष्ठभूमि की घटनाओं के कुछ उदाहरण हैं।

इवेंट हैंडलिंग क्या है?

ईवेंट हैंडलिंग वह तंत्र है जो ईवेंट को नियंत्रित करता है और यह तय करता है कि अगर कोई घटना होती है तो क्या होना चाहिए। इस तंत्र में एक कोड होता है जिसे एक इवेंट हैंडलर के रूप में जाना जाता है, जिसे किसी घटना के होने पर निष्पादित किया जाता है।

जावा घटनाओं को संभालने के लिए डेलिगेशन इवेंट मॉडल का उपयोग करता है। यह मॉडल घटनाओं को उत्पन्न करने और संभालने के लिए मानक तंत्र को परिभाषित करता है।

डेलिगेशन इवेंट मॉडल में निम्नलिखित प्रमुख प्रतिभागी हैं।

  • Source- स्रोत एक वस्तु है जिस पर घटना होती है। स्रोत हैंडलर को हुई घटना की जानकारी प्रदान करने के लिए जिम्मेदार है। जावा हमें स्रोत वस्तु के लिए कक्षाएं प्रदान करता है।

  • Listener- इसे इवेंट हैंडलर के नाम से भी जाना जाता है। श्रोता किसी घटना के प्रति प्रतिक्रिया उत्पन्न करने के लिए जिम्मेदार है। जावा कार्यान्वयन के दृष्टिकोण से, श्रोता भी एक वस्तु है। श्रोता तब तक प्रतीक्षा करता है जब तक कि वह एक घटना प्राप्त न कर ले। घटना प्राप्त होने के बाद, श्रोता घटना की प्रक्रिया करता है और फिर लौट आता है।

इस दृष्टिकोण का लाभ यह है कि उपयोगकर्ता इंटरफ़ेस तर्क पूरी तरह से तर्क से अलग हो जाता है जो घटना उत्पन्न करता है। उपयोगकर्ता इंटरफ़ेस तत्व एक ईवेंट के प्रसंस्करण को कोड के एक अलग टुकड़े में सौंपने में सक्षम है।

इस मॉडल में, श्रोता को स्रोत ऑब्जेक्ट के साथ पंजीकृत होने की आवश्यकता होती है ताकि श्रोता को घटना की सूचना प्राप्त हो सके। यह ईवेंट को संभालने का एक कुशल तरीका है क्योंकि ईवेंट सूचनाएँ केवल उन श्रोताओं को भेजी जाती हैं जो उन्हें प्राप्त करना चाहते हैं।

इवेंट हैंडलिंग में शामिल कदम

Step 1 - उपयोगकर्ता बटन पर क्लिक करता है और घटना उत्पन्न होती है।

Step 2 - संबंधित घटना वर्ग की वस्तु स्वचालित रूप से बनाई जाती है और स्रोत और घटना के बारे में जानकारी उसी वस्तु के भीतर मिलती है।

Step 3 - इवेंट ऑब्जेक्ट पंजीकृत श्रोता वर्ग की विधि के लिए भेजा जाता है।

Step 4 - विधि निष्पादित हो जाती है और रिटर्न मिलता है।

श्रोता के बारे में याद करने के लिए अंक

  • एक श्रोता वर्ग को डिजाइन करने के लिए, आपको कुछ श्रोता इंटरफेस विकसित करना होगा। ये श्रोता इंटरफेस कुछ सार्वजनिक अमूर्त कॉलबैक विधियों का अनुमान लगाते हैं, जिन्हें श्रोता वर्ग द्वारा लागू किया जाना चाहिए।

  • यदि आप किसी भी पूर्वनिर्धारित इंटरफेस को लागू नहीं करते हैं, तो आपकी कक्षा स्रोत ऑब्जेक्ट के लिए श्रोता वर्ग के रूप में कार्य नहीं कर सकती है।

कॉलबैक मेथड्स

ये वे तरीके हैं जो एपीआई प्रदाता द्वारा प्रदान किए जाते हैं और एप्लिकेशन प्रोग्रामर द्वारा परिभाषित किए जाते हैं और एप्लिकेशन डेवलपर द्वारा लागू किए जाते हैं। यहां कॉलबैक विधियां एक घटना विधि का प्रतिनिधित्व करती हैं। एक घटना के जवाब में, जावा jre कॉलबैक विधि आग जाएगा। ऐसे सभी कॉलबैक तरीके श्रोता इंटरफेस में प्रदान किए जाते हैं।

यदि कोई घटक कुछ श्रोता को अपनी घटनाओं को सुनने के लिए चाहता है, तो श्रोता को स्रोत को स्वयं को पंजीकृत करना होगा।

इवेंट हैंडलिंग उदाहरण

अपनी पसंद के किसी भी संपादक का उपयोग करके निम्नलिखित जावा प्रोग्राम बनाएं D:/ > SWING > com > tutorialspoint > gui >

SwingControlDemo.java

package com.tutorialspoint.gui;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SwingControlDemo {
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel;

   public SwingControlDemo(){
      prepareGUI();
   }
   public static void main(String[] args){
      SwingControlDemo swingControlDemo = new SwingControlDemo();  
      swingControlDemo.showEventDemo();       
   }
   private void prepareGUI(){
      mainFrame = new JFrame("Java SWING Examples");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));

      headerLabel = new JLabel("",JLabel.CENTER );
      statusLabel = new JLabel("",JLabel.CENTER);        
      statusLabel.setSize(350,100);
      
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }
   private void showEventDemo(){
      headerLabel.setText("Control in action: Button"); 

      JButton okButton = new JButton("OK");
      JButton submitButton = new JButton("Submit");
      JButton cancelButton = new JButton("Cancel");

      okButton.setActionCommand("OK");
      submitButton.setActionCommand("Submit");
      cancelButton.setActionCommand("Cancel");

      okButton.addActionListener(new ButtonClickListener()); 
      submitButton.addActionListener(new ButtonClickListener()); 
      cancelButton.addActionListener(new ButtonClickListener()); 

      controlPanel.add(okButton);
      controlPanel.add(submitButton);
      controlPanel.add(cancelButton);       

      mainFrame.setVisible(true);  
   }
   private class ButtonClickListener implements ActionListener{
      public void actionPerformed(ActionEvent e) {
         String command = e.getActionCommand();  
         
         if( command.equals( "OK" ))  {
            statusLabel.setText("Ok Button clicked.");
         } else if( command.equals( "Submit" ) )  {
            statusLabel.setText("Submit Button clicked."); 
         } else {
            statusLabel.setText("Cancel Button clicked.");
         }  	
      }		
   }
}

कमांड प्रॉम्प्ट का उपयोग करके प्रोग्राम को संकलित करें। के लिए जाओD:/ > SWING और निम्न कमांड टाइप करें।

D:\AWT>javac com\tutorialspoint\gui\SwingControlDemo.java

यदि कोई त्रुटि नहीं होती है, तो इसका मतलब है कि संकलन सफल है। निम्नलिखित कमांड का उपयोग करके प्रोग्राम को चलाएं।

D:\AWT>java com.tutorialspoint.gui.SwingControlDemo

निम्न आउटपुट सत्यापित करें।