AWT (Abstract Window Toolkit)-এ Adapter Classes হলো বিশেষ ধরনের ক্লাস যা কিছু ইভেন্ট হ্যান্ডলার ইন্টারফেসের জন্য ডিফল্ট (empty) ইমপ্লিমেন্টেশন প্রদান করে। এগুলি আপনাকে ইভেন্ট হ্যান্ডলার ক্লাস তৈরি করার সময় শুধুমাত্র প্রয়োজনীয় মেথডগুলো ইমপ্লিমেন্ট করার সুবিধা দেয়। AWT-এর বিভিন্ন ইভেন্ট ইন্টারফেসগুলির জন্য অ্যাডাপ্টার ক্লাস তৈরি করা হয়েছে যাতে আপনি শুধুমাত্র সেগুলির প্রয়োজনীয় মেথডগুলি ওভাররাইড করতে পারেন, বাকিগুলি বাদ দিয়ে।
Adapter Classes এর মূল সুবিধা:
- কোডের পরিমাণ কমানো: আপনি সমস্ত মেথড ইমপ্লিমেন্ট করার পরিবর্তে শুধুমাত্র প্রয়োজনীয় মেথডগুলো ইমপ্লিমেন্ট করতে পারেন।
- সহজ এবং পরিষ্কার কোড: কোড আরও সহজ এবং পরিষ্কার হয় কারণ আপনি মেথডগুলির অধিকাংশে কিছুই করেন না, শুধুমাত্র প্রয়োজনীয় অংশে কোড লিখে থাকেন।
- নির্দিষ্ট ইভেন্টগুলির জন্য কাস্টম হ্যান্ডলিং: 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 ব্যবহার করার সুবিধা:
- কোড সংক্ষিপ্ততা: আপনি প্রয়োজনীয় মেথডগুলি ইমপ্লিমেন্ট করার মাধ্যমে কোড কম এবং সহজ রাখতে পারেন।
- ইন্টারফেস ইমপ্লিমেন্টেশনে সুবিধা: যদি আপনি শুধুমাত্র এক বা দুটি ইভেন্ট হ্যান্ডেল করতে চান, তবে অ্যাডাপ্টার ক্লাস ব্যবহার করে বাকি মেথডগুলির জন্য কিছুই করতে হয় না।
- সহজ বোধগম্যতা: কাস্টম ইভেন্ট হ্যান্ডলিং তৈরি করার সময় অ্যাডাপ্টার ক্লাস সহজে বোঝা এবং ব্যবহারের জন্য উপযুক্ত।
এভাবে AWT-এ Adapter Classes ব্যবহার করে ইভেন্ট হ্যান্ডলিং অনেক সহজ এবং সুবিধাজনক হয়ে ওঠে।
Read more