Event Handling এর ধারণা

এডাব্লিউটি (AWT) - Java Technologies

382

AWT Event Handling হল একটি প্রক্রিয়া যার মাধ্যমে Java AWT অ্যাপ্লিকেশনগুলি ব্যবহারকারীর ইন্টারঅ্যাকশন (যেমন, মাউস ক্লিক, কীবোর্ড ইনপুট) থেকে ঘটিত ইভেন্টগুলি সঠিকভাবে প্রসেস করে। AWT একটি ইভেন্ট-ড্রিভেন প্রোগ্রামিং মডেল ব্যবহার করে, যার মাধ্যমে ইভেন্টগুলো তৈরি হয় এবং সেই ইভেন্টগুলিকে প্রোগ্রাম অনুযায়ী প্রক্রিয়া করা হয়।

AWT Event Handling এর ধারণা

Java AWT-তে ইভেন্ট হ্যান্ডলিং হলো একটি প্রক্রিয়া যেখানে বিভিন্ন ধরনের ইভেন্ট (যেমন বাটনে ক্লিক, কীবোর্ডে কী প্রেস) ঘটে এবং সেগুলোকে সঠিকভাবে প্রক্রিয়া করতে নির্দিষ্ট ইভেন্ট লিসেনার ব্যবহার করা হয়। ইভেন্ট হ্যান্ডলিং-এর মূল ধারণা হলো এনক্যাপসুলেশন (Encapsulation), যেখানে ইভেন্টগুলোর সাথে সম্পর্কিত কাজগুলো আলাদা আলাদা ক্লাসে বা ইন্টারফেসে রাখা হয়।

ইভেন্ট হ্যান্ডলিং-এর প্রক্রিয়া:

  1. ইভেন্ট সৃষ্টির প্রক্রিয়া:
    • যখন একটি ব্যবহারকারী কোনও GUI উপাদান (যেমন, বাটন ক্লিক, টেক্সটফিল্ডে টাইপিং) এর সাথে ইন্টারঅ্যাক্ট করেন, তখন একটি ইভেন্ট সৃষ্টি হয়।
  2. ইভেন্টের রিসিভ করা (Event Generation):
    • ইভেন্টগুলি অপারেটিং সিস্টেম থেকে প্রেরিত হয় এবং Java অ্যাপ্লিকেশন এএসএম (ASM) বা ড্রাইভার মাধ্যমে ইভেন্টের মধ্যে প্রেরিত হয়।
  3. ইভেন্ট লিসেনার (Event Listener):
    • ইভেন্টগুলোকে গ্রহণ এবং প্রক্রিয়া করতে Listener ইন্টারফেসগুলো ব্যবহৃত হয়। Listener ইন্টারফেসগুলিতে ইভেন্ট হ্যান্ডলিংয়ের জন্য একটি বা একাধিক মেথড থাকে, যা ব্যবহারকারী ইন্টারঅ্যাকশন অনুযায়ী কার্যকরী হয়।
  4. ইভেন্ট প্রক্রিয়া (Event Processing):
    • Listener ইন্টারফেসে ডিফাইন করা মেথডগুলো ব্যবহার করে ইভেন্টগুলো প্রক্রিয়া করা হয় এবং এর মাধ্যমে অ্যাপ্লিকেশনে প্রয়োজনীয় কাজ সম্পাদন করা হয়, যেমন বাটন ক্লিক হলে কিছু কাজ করা, কী প্রেস হলে কোনো অক্ষর নেওয়া ইত্যাদি।

Event Handling-এর প্রধান উপাদানগুলো:

  1. ইভেন্ট (Event):
    • এটি ব্যবহারকারীর ইন্টারঅ্যাকশনের ফলস্বরূপ ঘটে। যেমন: ActionEvent, MouseEvent, KeyEvent ইত্যাদি।
  2. ইভেন্ট সেন্টার (Event Source):
    • এটি এমন একটি উপাদান যা ইভেন্ট তৈরি করে। উদাহরণস্বরূপ, একটি বাটন ক্লিক করলে Button একটি ActionEvent তৈরি করে।
  3. ইভেন্ট লিসেনার (Event Listener):
    • এটি একটি ইন্টারফেস যা ইভেন্টের জন্য অপেক্ষা করে এবং ইভেন্ট ঘটলে একটি নির্দিষ্ট কাজ বা অ্যাকশন সম্পাদন করে। উদাহরণস্বরূপ, ActionListener, MouseListener, KeyListener
  4. ইভেন্ট হ্যান্ডলিং (Event Handling):
    • এটি ব্যবহারকারীর ইন্টারঅ্যাকশনের সময় ঘটে এবং প্রক্রিয়া করা হয়, যেমন বাটন ক্লিক হলে ইভেন্টে থাকা কোড রান করা।

ইভেন্ট লিসেনার ইন্টারফেসসমূহ:

Java AWT-তে ইভেন্ট হ্যান্ডলিংয়ের জন্য বিভিন্ন ধরনের ইভেন্ট লিসেনার ইন্টারফেস ব্যবহৃত হয়। কিছু গুরুত্বপূর্ণ লিসেনার ইন্টারফেস:

  1. ActionListener:
    • এটি ActionEvent ইভেন্ট হ্যান্ডল করে, যা সাধারণত বাটন ক্লিক, মেনু আইটেম সিলেক্ট, অথবা অন্যান্য অ্যাকশন ট্রিগার করার জন্য ব্যবহৃত হয়।
    • মেথড: void actionPerformed(ActionEvent e)
  2. MouseListener:
    • এটি মাউসের বিভিন্ন ইভেন্ট যেমন মাউস ক্লিক, মাউস প্রবেশ করা, মাউস বের হওয়া ইত্যাদি হ্যান্ডল করে।
    • মেথড:
      • void mouseClicked(MouseEvent e)
      • void mouseEntered(MouseEvent e)
      • void mouseExited(MouseEvent e)
      • void mousePressed(MouseEvent e)
      • void mouseReleased(MouseEvent e)
  3. KeyListener:
    • এটি কীবোর্ডের ইভেন্ট যেমন কী টিপে রাখা, কী রিলিজ করা ইত্যাদি হ্যান্ডল করে।
    • মেথড:
      • void keyPressed(KeyEvent e)
      • void keyReleased(KeyEvent e)
      • void keyTyped(KeyEvent e)
  4. WindowListener:
    • এটি উইন্ডোর ইভেন্ট যেমন উইন্ডো ওপেন করা, উইন্ডো ক্লোজ করা, উইন্ডো আইকনাইজ করা ইত্যাদি হ্যান্ডল করে।
    • মেথড:
      • void windowOpened(WindowEvent e)
      • void windowClosing(WindowEvent e)
      • void windowClosed(WindowEvent e)
      • void windowIconified(WindowEvent e)
      • void windowDeiconified(WindowEvent e)
      • void windowActivated(WindowEvent e)
      • void windowDeactivated(WindowEvent e)

ইভেন্ট হ্যান্ডলিং-এর উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class EventHandlingExample {
    public static void main(String[] args) {
        Frame f = new Frame("Event Handling Example");
        Button btn = new Button("Click Me");
        
        // ActionListener ইভেন্ট হ্যান্ডলারের জন্য
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("Button clicked!");
            }
        });
        
        f.add(btn);
        f.setSize(300, 200);
        f.setVisible(true);
        
        // WindowListener ব্যবহার করে উইন্ডো বন্ধের ইভেন্ট হ্যান্ডল করা
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });
    }
}

ইভেন্ট হ্যান্ডলিং-এর প্রক্রিয়া:

  1. ইভেন্ট ঘটানো: ব্যবহারকারী একটি GUI উপাদান (যেমন বাটন ক্লিক বা কীবোর্ডে কী প্রেস) এর সাথে ইন্টারঅ্যাক্ট করেন।
  2. ইভেন্ট লিসেনারে প্রেরণ: ইভেন্টটি সংশ্লিষ্ট ইভেন্ট লিসেনারে প্রেরিত হয় (যেমন, ActionListener, MouseListener ইত্যাদি)।
  3. ইভেন্টের প্রক্রিয়া: লিসেনার ইন্টারফেসে ডিফাইন করা মেথডটি ট্রিগার হয় এবং ইভেন্ট প্রক্রিয়া করা হয়।
  4. উত্তর প্রদান: প্রয়োজনীয় কাজটি সম্পন্ন করা হয়, যেমন: বার্তা প্রদর্শন, ডাটা প্রক্রিয়া করা ইত্যাদি।

AWT-তে ইভেন্ট হ্যান্ডলিং ব্যবহারের মাধ্যমে Java অ্যাপ্লিকেশনগুলি ব্যবহারকারীর ইন্টারঅ্যাকশন থেকে ঘটিত ইভেন্টগুলো সঠিকভাবে হ্যান্ডল করতে সক্ষম হয়। AWT ইভেন্ট হ্যান্ডলিং পদ্ধতি ইভেন্ট-ড্রিভেন প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ দিক এবং এটি ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে।

Content added By

AWT Event Model হলো Java-র AWT (Abstract Window Toolkit) গ্রাফিক্যাল ইউজার ইন্টারফেসের একটি গুরুত্বপূর্ণ অংশ, যা ইভেন্ট ভিত্তিক প্রোগ্রামিং মডেল সরবরাহ করে। এটি ব্যবহৃত হয় GUI অ্যাপ্লিকেশনগুলির মধ্যে ইন্টারঅ্যাকশন পরিচালনা করার জন্য, যেমন ব্যবহারকারী কোনো বোতামে ক্লিক করলে বা মাউস, কী-বোর্ডের ইনপুট দিলে কম্পোনেন্টগুলির মধ্যে সঠিক প্রতিক্রিয়া প্রদানের জন্য।

AWT Event Model-এর ভূমিকা:

AWT Event Model-এর মূল ভূমিকা হলো ব্যবহারকারীর ক্রিয়াগুলির (যেমন মাউস ক্লিক, কী চাপা) ওপর ভিত্তি করে ইভেন্ট তৈরি করা এবং তারপর সেই ইভেন্টের সাথে সম্পর্কিত Listener-কে তা পরিচালনা করতে দেয়া। এই মডেল ব্যবহৃত হয় ইভেন্টগুলি সঠিকভাবে পরিচালনা করতে, যাতে ব্যবহারকারীর সাথে কম্পিউটার বা অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন সঠিকভাবে ঘটতে পারে।

AWT Event Model-এর মাধ্যমে ইভেন্টগুলোর পাঠানো, প্রক্রিয়া করা এবং হ্যান্ডলিং একটি সুশৃঙ্খল পদ্ধতিতে সম্পন্ন হয়। ইভেন্ট হ্যান্ডলিং একটি গুরুত্বপূর্ণ বিষয়, কারণ এটি সরাসরি ব্যবহারকারীর অভিজ্ঞতার সাথে সম্পর্কিত।

AWT Event Model-এর প্রধান উপাদানসমূহ:

  1. Event (ইভেন্ট):
    • ব্যবহার: ইভেন্ট হলো ব্যবহারকারীর কোন কার্যকলাপের প্রতিক্রিয়া যা GUI কম্পোনেন্টে ঘটে। যেমন, একটি বোতামে ক্লিক করা, মাউসের অবস্থান পরিবর্তন করা, কী-বোর্ডে কিছু টিপে দেওয়া ইত্যাদি।
    • প্রকার: AWT ইভেন্টগুলো প্রধানত নিম্নলিখিত ক্যাটেগরিতে বিভক্ত:
      • MouseEvent: মাউসের ক্রিয়া (যেমন ক্লিক, মুভ, প্রেস, রিলিজ)।
      • KeyEvent: কী-বোর্ডের ক্রিয়া (যেমন কী চাপা, কী ছেড়ে দেওয়া)।
      • ActionEvent: একটি কম্পোনেন্টের (যেমন বোতাম) কোনো কর্ম সম্পাদন (যেমন বোতাম ক্লিক)।
      • WindowEvent: উইন্ডোর ইভেন্ট (যেমন উইন্ডো খোলা, বন্ধ করা, রিসাইজ করা)।
      • ItemEvent: আইটেমের (যেমন চেকবক্স বা রেডিও বাটন) অবস্থা পরিবর্তন।
  2. Event Source (ইভেন্ট সোর্স):
    • ব্যবহার: এটি সেই কম্পোনেন্ট যা ইভেন্ট তৈরি করে। উদাহরণস্বরূপ, একটি বোতাম যখন ক্লিক করা হয়, তখন সেই বোতামটি ইভেন্ট সোর্স হিসেবে কাজ করে।
    • উদাহরণ:

      Button b = new Button("Click Me");
      
  3. Listener (লিসেনার):
    • ব্যবহার: এটি সেই ইন্টারফেস যা ইভেন্টের জন্য রেসপন্স প্রদান করে। Listener ইভেন্টগুলির প্রতি সাড়া দেয়, যেমন একটি বোতাম ক্লিক হওয়ার পর এটি বোতামের জন্য একটি নির্দিষ্ট ক্রিয়া (অ্যাকশন) সম্পাদন করে।
    • ধরণ:
      • ActionListener: ActionEvent (যেমন বোতাম ক্লিক করা) হ্যান্ডেল করে।
      • MouseListener: MouseEvent (যেমন মাউস ক্লিক, মাউস মুভ) হ্যান্ডেল করে।
      • KeyListener: KeyEvent (যেমন কী চাপা) হ্যান্ডেল করে।
    • উদাহরণ:

      Button b = new Button("Click Me");
      b.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              System.out.println("Button clicked!");
          }
      });
      
  4. Event Listener Registration:
    • ব্যবহার: ইভেন্ট হ্যান্ডলার (Listener) একটি ইভেন্ট সোর্সে যুক্ত করতে হয় যাতে ইভেন্টটি সঠিকভাবে হ্যান্ডল করা যায়। addListener() পদ্ধতির মাধ্যমে একটি Listener ইভেন্ট সোর্সে যুক্ত করা হয়।
    • উদাহরণ:

      Button b = new Button("Click Me");
      b.addActionListener(new MyActionListener());
      
  5. Event Dispatching (ইভেন্ট ডিস্ট্রিবিউশন):
    • ব্যবহার: ইভেন্টের উত্স থেকে Listener পর্যন্ত পৌঁছানোর প্রক্রিয়াকে ইভেন্ট ডিস্ট্রিবিউশন বলা হয়। যখন একটি ইভেন্ট ঘটবে, তা Listener-এ পাঠানো হয় এবং Listener তার নির্দিষ্ট actionPerformed() পদ্ধতি অথবা অন্যান্য সংশ্লিষ্ট পদ্ধতি চালায়।
    • উদাহরণ:
      • বোতাম ক্লিক হওয়ার সময় ActionEvent Listener এর actionPerformed() মেথড কল হবে।

AWT Event Model-এর মূল পদক্ষেপ:

  1. ইভেন্ট সৃষ্টি: ব্যবহারকারী যখন GUI কম্পোনেন্টের সাথে ইন্টারঅ্যাক্ট করেন (যেমন বোতাম ক্লিক করা), তখন একটি ইভেন্ট তৈরি হয়।
  2. ইভেন্ট ডিস্ট্রিবিউশন: তৈরি হওয়া ইভেন্ট সংশ্লিষ্ট Listener এর কাছে পাঠানো হয়।
  3. ইভেন্ট হ্যান্ডলিং: Listener, ইভেন্ট পাওয়ার পর, সংশ্লিষ্ট ক্রিয়া (যেমন, বোতাম ক্লিক হলে কিছু করা) সম্পাদন করে।

AWT Event Model-এর ভূমিকা কেন গুরুত্বপূর্ণ?

  1. ইন্টারঅ্যাকটিভ ফিচার: Event Model ব্যবহারকারীর সঙ্গে কম্পিউটার বা অ্যাপ্লিকেশনের ইন্টারঅ্যাকশনকে একে অপরের সাথে সংযুক্ত করে। এতে ব্যবহারকারী অ্যাপ্লিকেশনটির সঙ্গে ইন্টারঅ্যাক্ট করার সময় সঠিক প্রতিক্রিয়া পায়।
  2. ইভেন্ট-চালিত প্রোগ্রামিং: ইভেন্ট-চালিত প্রোগ্রামিং মডেল ব্যবহার করে GUI অ্যাপ্লিকেশন তৈরি করা যায় যেখানে কার্যক্রম ব্যবহারকারীর ক্রিয়া (ইভেন্ট) এর উপর নির্ভর করে।
  3. কোডের পরিস্কারতা এবং ব্যবস্থাপনা: ইভেন্ট-ভিত্তিক পদ্ধতির মাধ্যমে কোডটি পরিষ্কার, পরিচালনাযোগ্য এবং পরীক্ষাযোগ্য হয়, কারণ একেকটি ইভেন্টের জন্য আলাদা Listener তৈরি করা যায়।
  4. আধুনিক GUI অ্যাপ্লিকেশনে কার্যকারিতা: AWT Event Model ব্যবহার করা GUI অ্যাপ্লিকেশনকে আরও কার্যকরী এবং ব্যবহারকারী-বন্ধুত্বপূর্ণ করে তোলে, যেখানে ইন্টারফেস স্বয়ংক্রিয়ভাবে ব্যবহারকারীর ক্রিয়া অনুযায়ী প্রতিক্রিয়া জানায়।

AWT Event Model Java GUI অ্যাপ্লিকেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি ইভেন্ট এবং তাদের হ্যান্ডলিং-এর মাধ্যমে অ্যাপ্লিকেশনগুলিকে ব্যবহারকারী-ইন্টারঅ্যাকটিভ এবং ইভেন্ট-চালিত করে তোলে। এটি ডেভেলপারদের সঠিকভাবে এবং সহজে ইভেন্টগুলিকে হ্যান্ডল করার সুযোগ দেয়, যার ফলে একটি কার্যকর, প্রতিক্রিয়া সাপেক্ষ এবং ব্যবহারকারী-বান্ধব অ্যাপ্লিকেশন তৈরি করা সম্ভব হয়।

Content added By

AWT (Abstract Window Toolkit)-এ Event Sources এবং Event Listeners হল GUI অ্যাপ্লিকেশন তৈরির সময় ইভেন্ট হ্যান্ডলিং এর দুটি গুরুত্বপূর্ণ ধারণা।

1. Event Sources (ইভেন্ট সোর্স)

ইভেন্ট সোর্স হল সেই কম্পোনেন্টগুলি যা থেকে ইভেন্ট শুরু হয়। AWT-এর বিভিন্ন কম্পোনেন্ট (যেমন বাটন, টেক্সট ফিল্ড, মাউস, কীবোর্ড ইত্যাদি) ইভেন্ট সোর্স হিসেবে কাজ করে। যখন ব্যবহারকারী কোন ক্রিয়া সম্পন্ন করেন (যেমন বোতাম ক্লিক করা বা কীবোর্ডের কী চাপানো), তখন সেই ইভেন্টটি ইভেন্ট সোর্স থেকে উৎপন্ন হয় এবং ইভেন্ট লিসনার বা হ্যান্ডলার সেই ইভেন্টটি গ্রহণ করে।

উদাহরণ:

  • Button: যদি ব্যবহারকারী একটি বোতামে ক্লিক করেন, তবে ঐ বোতামটি একটি ইভেন্ট সোর্স হিসেবে কাজ করবে।
  • TextField: একটি টেক্সট ফিল্ডে কিছু টাইপ করলে, সেটি একটি ইভেন্ট সোর্স হিসেবে কাজ করবে।

2. Event Listeners (ইভেন্ট লিসনার)

ইভেন্ট লিসনার হল সেই অবজেক্ট বা ক্লাস যেটি ইভেন্ট সোর্স থেকে ইভেন্ট গ্রহণ করে এবং সেই ইভেন্টে প্রয়োজনীয় অ্যাকশন গ্রহণ করে। ইভেন্ট লিসনার একটি ইন্টারফেস বা অবজেক্ট হিসেবে থাকে এবং ActionListener, MouseListener, KeyListener ইত্যাদি ধরনের ইন্টারফেস বা ক্লাসের মাধ্যমে ইভেন্ট হ্যান্ডল করা হয়।

বৈশিষ্ট্য:

  • ইভেন্ট লিসনারকে ইভেন্ট সোর্সের সাথে অ্যাটাচ করতে হয়, যাতে ইভেন্ট সোর্সের কোনো ক্রিয়া ঘটলে ইভেন্ট লিসনার সেটি শনাক্ত করে এবং প্রাসঙ্গিক কার্যক্রম গ্রহণ করতে পারে।
  • AWT-এ ইভেন্ট লিসনার সাধারণত ইন্টারফেস আকারে থাকে এবং সে অনুযায়ী সেগুলি ইমপ্লিমেন্ট করতে হয়।

ইভেন্ট সোর্স এবং ইভেন্ট লিসনারের মধ্যে সম্পর্ক:

  1. যখন একটি ব্যবহারকারী কোনো ক্রিয়া করেন (যেমন একটি বোতাম ক্লিক), তখন ইভেন্ট সোর্স (যেমন বোতাম) একটি ইভেন্ট তৈরি করে।
  2. সেই ইভেন্টটি ইভেন্ট লিসনার (যেমন ActionListener) গ্রহণ করে এবং নির্দিষ্ট অ্যাকশন (যেমন "Button clicked!" মেসেজ প্রিন্ট করা) সম্পন্ন করে।

ইভেন্ট হ্যান্ডলিংয়ের উদাহরণ

import java.awt.*;
import java.awt.event.*;

public class ButtonClickExample {
    public static void main(String[] args) {
        // Frame তৈরি
        Frame frame = new Frame("Button Click Example");

        // বোতাম তৈরি
        Button button = new Button("Click Me");

        // বোতামে ActionListener যোগ করা
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("Button clicked!");
            }
        });

        // বোতামটি Frame-এ যোগ করা
        frame.add(button);

        // Frame সাইজ এবং দৃশ্যমান করা
        frame.setSize(300, 200);
        frame.setVisible(true);

        // উইন্ডো ক্লোজ করার জন্য হ্যান্ডলার
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });
    }
}

এখানে:

  • Button: Event Source (কারণ এটি বোতাম ক্লিকের মাধ্যমে ইভেন্ট তৈরি করে)।
  • ActionListener: Event Listener (এটি বোতামের ক্লিক ইভেন্ট গ্রহণ করে এবং প্রাসঙ্গিক অ্যাকশন গ্রহণ করে, যেমন একটি মেসেজ প্রিন্ট করা)।

ইভেন্ট লিসনারের প্রধান ধরনের:

  1. ActionListener: বোতাম ক্লিক, মেনু আইটেম নির্বাচন, অথবা অন্য কিছু অ্যাকশন হ্যান্ডল করতে ব্যবহৃত হয়।
    • method: actionPerformed(ActionEvent e)
  2. MouseListener: মাউস ইভেন্ট (যেমন মাউস ক্লিক, মাউস এন্ট্রি, মাউস এক্সিট ইত্যাদি) হ্যান্ডল করতে ব্যবহৃত হয়।
    • methods: mouseClicked(), mouseEntered(), mouseExited(), mousePressed(), mouseReleased()
  3. KeyListener: কীবোর্ডের ইভেন্ট (যেমন কী চাপানো, কী রিলিজ করা) হ্যান্ডল করতে ব্যবহৃত হয়।
    • methods: keyTyped(), keyPressed(), keyReleased()
  4. WindowListener: উইন্ডো সম্পর্কিত ইভেন্ট (যেমন উইন্ডো খোলা, উইন্ডো বন্ধ করা) হ্যান্ডল করতে ব্যবহৃত হয়।
    • methods: windowOpened(), windowClosing(), windowClosed(), windowIconified(), windowDeiconified()

সারাংশ:

  • Event Sources: এগুলি সেই কম্পোনেন্ট যা থেকে ইভেন্ট তৈরি হয় (যেমন বোতাম, টেক্সট ফিল্ড, মাউস ইত্যাদি)।
  • Event Listeners: এগুলি সেই অবজেক্ট যা ইভেন্ট গ্রহণ করে এবং সেই ইভেন্টে নির্দিষ্ট অ্যাকশন বা কার্যক্রম গ্রহণ করে (যেমন ActionListener, MouseListener, KeyListener ইত্যাদি)।

AWT-এ ইভেন্ট হ্যান্ডলিং ব্যবস্থার মাধ্যমে, ব্যবহারকারীর সাথে অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন পরিচালিত হয়।

Content added By

AWT (Abstract Window Toolkit) ইভেন্ট হ্যান্ডলিংয়ে MouseEvent, KeyEvent, এবং ActionEvent হল প্রধান তিনটি ইভেন্ট, যেগুলি ব্যবহারকারীর মাউস, কীবোর্ড এবং অ্যাকশন (যেমন বোতাম ক্লিক) ইন্টারঅ্যাকশনের মাধ্যমে ঘটে। এগুলি সাধারণত Listener ইন্টারফেস দ্বারা হ্যান্ডল করা হয়। প্রতিটি ইভেন্টের জন্য একটি নির্দিষ্ট লিসেনার প্রয়োজন, যা নির্দিষ্ট ইভেন্টের জন্য কাজ করবে।

১. MouseEvent

MouseEvent মাউসের ক্রিয়াকলাপ (যেমন ক্লিক, মুভ, ইত্যাদি) ট্র্যাক করতে ব্যবহৃত হয়।

মাউস ইভেন্টের প্রধান মেথড:

  • mouseClicked(MouseEvent e): মাউস ক্লিক হলে এটি কল হয়।
  • mousePressed(MouseEvent e): মাউস প্রেস করা হলে কল হয়।
  • mouseReleased(MouseEvent e): মাউস রিলিজ করা হলে কল হয়।
  • mouseEntered(MouseEvent e): মাউস একটি উপাদানে প্রবেশ করলে কল হয়।
  • mouseExited(MouseEvent e): মাউস একটি উপাদান ত্যাগ করলে কল হয়।
  • mouseDragged(MouseEvent e): মাউস ড্র্যাগ হলে কল হয়।
  • mouseMoved(MouseEvent e): মাউস মুভ করলে কল হয়।

উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class MouseEventExample {
    public static void main(String[] args) {
        Frame frame = new Frame("MouseEvent Example");
        Label label = new Label("MouseEvent Demo");

        label.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                label.setText("Mouse Clicked at: " + e.getX() + ", " + e.getY());
            }

            public void mouseEntered(MouseEvent e) {
                label.setText("Mouse Entered");
            }

            public void mouseExited(MouseEvent e) {
                label.setText("Mouse Exited");
            }
        });

        frame.add(label);
        frame.setSize(400, 200);
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • এখানে মাউস ক্লিক, এন্ট্রি, এবং এক্সিট ইভেন্টগুলোর জন্য লিসেনার ব্যবহৃত হয়েছে।

২. KeyEvent

KeyEvent কীবোর্ডের ইনপুট (যেমন কী প্রেস, কী রিলিজ) হ্যান্ডল করতে ব্যবহৃত হয়।

কী ইভেন্টের প্রধান মেথড:

  • keyPressed(KeyEvent e): একটি কী প্রেস করা হলে কল হয়।
  • keyReleased(KeyEvent e): একটি কী রিলিজ করা হলে কল হয়।
  • keyTyped(KeyEvent e): একটি কী টাইপ করা হলে কল হয় (যেমন অক্ষর টাইপিং)।

উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class KeyEventExample {
    public static void main(String[] args) {
        Frame frame = new Frame("KeyEvent Example");
        TextArea textArea = new TextArea();

        textArea.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                System.out.println("Key Pressed: " + e.getKeyChar());
            }

            public void keyReleased(KeyEvent e) {
                System.out.println("Key Released: " + e.getKeyChar());
            }
        });

        frame.add(textArea);
        frame.setSize(400, 200);
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • এখানে কীবোর্ডের প্রেস এবং রিলিজ ইভেন্টের জন্য লিসেনার ব্যবহার করা হয়েছে।

৩. ActionEvent

ActionEvent সাধারণত বোতাম ক্লিক, মেনু সিলেক্ট, অথবা যেকোনো অ্যাকশন ট্রিগার হওয়ার সময় ঘটে। এটি সাধারণত Button, MenuItem, TextField ইত্যাদি উপাদানে ব্যবহৃত হয়।

অ্যাকশন ইভেন্টের প্রধান মেথড:

  • actionPerformed(ActionEvent e): অ্যাকশন ইভেন্ট ঘটলে কল হয়।

উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class ActionEventExample {
    public static void main(String[] args) {
        Frame frame = new Frame("ActionEvent Example");
        Button button = new Button("Click Me");

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("Button Clicked!");
            }
        });

        frame.add(button);
        frame.setSize(400, 200);
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • এখানে একটি বোতাম ক্লিক হলে "Button Clicked!" প্রিন্ট হবে।

সারাংশ

  • MouseEvent: মাউসের বিভিন্ন ক্রিয়া (যেমন ক্লিক, প্রবেশ, ত্যাগ, মুভ) হ্যান্ডল করতে ব্যবহৃত হয়। MouseListener বা MouseAdapter ইন্টারফেসের মাধ্যমে মাউস ইভেন্ট হ্যান্ডল করা হয়।
  • KeyEvent: কীবোর্ডের ইনপুটের জন্য ব্যবহৃত হয়। এটি KeyListener বা KeyAdapter ইন্টারফেসের মাধ্যমে হ্যান্ডল করা হয়।
  • ActionEvent: অ্যাকশন ইভেন্ট (যেমন বোতাম ক্লিক) হ্যান্ডল করতে ব্যবহৃত হয়। এটি ActionListener ইন্টারফেসের মাধ্যমে হ্যান্ডল করা হয়।
Content added By

AWT (Abstract Window Toolkit)-এ Adapter Classes হলো বিশেষ ধরনের ক্লাস যা কিছু ইভেন্ট হ্যান্ডলার ইন্টারফেসের জন্য ডিফল্ট (empty) ইমপ্লিমেন্টেশন প্রদান করে। এগুলি আপনাকে ইভেন্ট হ্যান্ডলার ক্লাস তৈরি করার সময় শুধুমাত্র প্রয়োজনীয় মেথডগুলো ইমপ্লিমেন্ট করার সুবিধা দেয়। AWT-এর বিভিন্ন ইভেন্ট ইন্টারফেসগুলির জন্য অ্যাডাপ্টার ক্লাস তৈরি করা হয়েছে যাতে আপনি শুধুমাত্র সেগুলির প্রয়োজনীয় মেথডগুলি ওভাররাইড করতে পারেন, বাকিগুলি বাদ দিয়ে।

Adapter Classes এর মূল সুবিধা:

  1. কোডের পরিমাণ কমানো: আপনি সমস্ত মেথড ইমপ্লিমেন্ট করার পরিবর্তে শুধুমাত্র প্রয়োজনীয় মেথডগুলো ইমপ্লিমেন্ট করতে পারেন।
  2. সহজ এবং পরিষ্কার কোড: কোড আরও সহজ এবং পরিষ্কার হয় কারণ আপনি মেথডগুলির অধিকাংশে কিছুই করেন না, শুধুমাত্র প্রয়োজনীয় অংশে কোড লিখে থাকেন।
  3. নির্দিষ্ট ইভেন্টগুলির জন্য কাস্টম হ্যান্ডলিং: Adapter ক্লাসগুলি ব্যবহারের মাধ্যমে আপনি শুধুমাত্র আপনার প্রয়োজনীয় ইভেন্টগুলির জন্য কাস্টম হ্যান্ডলিং যুক্ত করতে পারেন।

AWT Adapter Classes:

AWT-এ বিভিন্ন ইভেন্ট হ্যান্ডলিংয়ের জন্য অ্যাডাপ্টার ক্লাস রয়েছে। নিচে কিছু জনপ্রিয় অ্যাডাপ্টার ক্লাস এবং তাদের ব্যবহার তুলে ধরা হলো:

1. WindowAdapter:

WindowAdapter ক্লাসটি WindowListener ইন্টারফেসের অ্যাডাপ্টার ক্লাস, যা উইন্ডো ইভেন্ট (যেমন উইন্ডো বন্ধ করা, উইন্ডো আছড়ে পড়া ইত্যাদি) হ্যান্ডল করতে ব্যবহৃত হয়। আপনি যেসব মেথড ব্যবহার করবেন, কেবল সেগুলোই ওভাররাইড করবেন, বাকি মেথডগুলির জন্য আপনি কিছুই করতে হবেন না।

উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class WindowAdapterExample {
    public static void main(String[] args) {
        Frame frame = new Frame("WindowAdapter Example");

        // WindowAdapter ব্যবহার করা
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });

        frame.setSize(300, 300);
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • এখানে WindowAdapter ক্লাসের windowClosing মেথডটি ওভাররাইড করা হয়েছে। যখন উইন্ডো বন্ধ করার চেষ্টা করা হবে, তখন System.exit(0) কল করে অ্যাপ্লিকেশনটি বন্ধ হবে।

2. MouseAdapter:

MouseAdapter ক্লাসটি MouseListener ইন্টারফেসের অ্যাডাপ্টার ক্লাস, যা মাউস ইভেন্ট (যেমন মাউস ক্লিক, মাউস মুভমেন্ট) হ্যান্ডল করতে ব্যবহৃত হয়। এই ক্লাসটি মাউস সম্পর্কিত অনেক ইভেন্টের জন্য ডিফল্ট মেথড ইমপ্লিমেন্টেশন প্রদান করে, তাই আপনি শুধুমাত্র প্রয়োজনীয় মেথডগুলিই ওভাররাইড করতে পারবেন।

উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class MouseAdapterExample {
    public static void main(String[] args) {
        Frame frame = new Frame("MouseAdapter Example");

        // MouseAdapter ব্যবহার করা
        frame.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent me) {
                System.out.println("Mouse clicked at: " + me.getX() + ", " + me.getY());
            }
        });

        frame.setSize(300, 300);
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • mouseClicked মেথডটি এখানে ব্যবহার করা হয়েছে, যাতে মাউস ক্লিক করা হলে তার স্থান কনসোলে প্রিন্ট হয়।

3. KeyAdapter:

KeyAdapter ক্লাসটি KeyListener ইন্টারফেসের অ্যাডাপ্টার ক্লাস, যা কীবোর্ড সম্পর্কিত ইভেন্ট (যেমন কীবোর্ডের কী প্রেস বা কী রিলিজ) হ্যান্ডল করতে ব্যবহৃত হয়।

উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class KeyAdapterExample {
    public static void main(String[] args) {
        Frame frame = new Frame("KeyAdapter Example");

        // KeyAdapter ব্যবহার করা
        frame.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent ke) {
                System.out.println("Key pressed: " + ke.getKeyChar());
            }
        });

        frame.setSize(300, 300);
        frame.setVisible(true);
        frame.setFocusable(true); // KeyListener কাজ করতে হলে, ফোকাসযোগ্য হতে হবে
    }
}

ব্যাখ্যা:

  • keyPressed মেথডটি কীবোর্ডে কোনও কী প্রেস করা হলে তার চরিত্র কনসোলে প্রিন্ট করবে।

4. ComponentAdapter:

ComponentAdapter ক্লাসটি ComponentListener ইন্টারফেসের অ্যাডাপ্টার ক্লাস, যা উপাদান সম্পর্কিত ইভেন্ট (যেমন উপাদানটি রিসাইজ করা, উপাদানটি দৃশ্যমান হওয়া) হ্যান্ডল করতে ব্যবহৃত হয়।

উদাহরণ:

import java.awt.*;
import java.awt.event.*;

public class ComponentAdapterExample {
    public static void main(String[] args) {
        Frame frame = new Frame("ComponentAdapter Example");

        // ComponentAdapter ব্যবহার করা
        frame.addComponentListener(new ComponentAdapter() {
            public void componentResized(ComponentEvent ce) {
                System.out.println("Component resized to: " + frame.getWidth() + "x" + frame.getHeight());
            }
        });

        frame.setSize(300, 300);
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • এখানে componentResized মেথডটি ব্যবহার করা হয়েছে, যা উইন্ডোর সাইজ পরিবর্তন হলে নতুন সাইজ কনসোলে প্রিন্ট করবে।

Adapter Classes ব্যবহার করার সুবিধা:

  1. কোড সংক্ষিপ্ততা: আপনি প্রয়োজনীয় মেথডগুলি ইমপ্লিমেন্ট করার মাধ্যমে কোড কম এবং সহজ রাখতে পারেন।
  2. ইন্টারফেস ইমপ্লিমেন্টেশনে সুবিধা: যদি আপনি শুধুমাত্র এক বা দুটি ইভেন্ট হ্যান্ডেল করতে চান, তবে অ্যাডাপ্টার ক্লাস ব্যবহার করে বাকি মেথডগুলির জন্য কিছুই করতে হয় না।
  3. সহজ বোধগম্যতা: কাস্টম ইভেন্ট হ্যান্ডলিং তৈরি করার সময় অ্যাডাপ্টার ক্লাস সহজে বোঝা এবং ব্যবহারের জন্য উপযুক্ত।

এভাবে AWT-এ Adapter Classes ব্যবহার করে ইভেন্ট হ্যান্ডলিং অনেক সহজ এবং সুবিধাজনক হয়ে ওঠে।

Content added By
Promotion

Are you sure to start over?

Loading...