JavaFX এ Event Handling হল JavaFX অ্যাপ্লিকেশনগুলিতে ইউজারের ইন্টারঅ্যাকশন (যেমন ক্লিক, কিবোর্ড ইনপুট, মাউস মুভমেন্ট ইত্যাদি) পরিচালনা করার প্রক্রিয়া। JavaFX এ Event Handling ব্যবস্থাপনা একটি শক্তিশালী সিস্টেমের মাধ্যমে করা হয়, যেখানে আপনি ইভেন্ট লিসেনার এবং হ্যান্ডলার ব্যবহার করে বিভিন্ন ধরনের ইভেন্ট (যেমন ক্লিক, হোভার, কীবোর্ড এন্ট্রি) ট্রিগার করতে পারেন এবং সেগুলির প্রতিক্রিয়া নির্ধারণ করতে পারেন।
JavaFX এ Event Handling এর ধারণা
- Event Source:
- JavaFX অ্যাপ্লিকেশনে ইভেন্ট সোর্স হল সেই উপাদান যা ইভেন্ট জেনারেট করে। যেমন একটি
ButtonবাTextFieldযা ইউজারের ইন্টারঅ্যাকশন থেকে ইভেন্ট তৈরি করে।
- JavaFX অ্যাপ্লিকেশনে ইভেন্ট সোর্স হল সেই উপাদান যা ইভেন্ট জেনারেট করে। যেমন একটি
- Event Handler:
- ইভেন্ট হ্যান্ডলার হল সেই কোড যা ইভেন্টের প্রতিক্রিয়া জানায়। এটি সাধারণত একটি মেথড যা নির্দিষ্ট ইভেন্টের জন্য ট্রিগার করা হয়।
- Event Listener:
- Event Listener একটি অবজেক্ট যা নির্দিষ্ট ধরনের ইভেন্টের জন্য সাইন আপ করে। এটি একটি কার্যকর ইভেন্ট হ্যান্ডলার এবং যখন নির্দিষ্ট ইভেন্ট ঘটে, তখন এটি সেই ইভেন্ট হ্যান্ডলিং কোডটি চালায়।
JavaFX এ Event Handling এর বিভিন্ন ধাপ:
- ইভেন্ট ডিক্লেয়ারেশন: কোন ইভেন্টটি ট্রিগার করা হবে তা নির্ধারণ করা হয়।
- ইভেন্ট হ্যান্ডলার সেট করা: কোন কোডটি ইভেন্ট হওয়ার পর চালানো হবে তা নির্ধারণ করা হয়।
- ইভেন্ট রেজিস্ট্রেশন: ইভেন্ট সোর্সের সাথে ইভেন্ট হ্যান্ডলার যুক্ত করা হয়।
JavaFX এ ইভেন্ট হ্যান্ডলিং এর প্রধান উপাদান:
- Event Types:
- JavaFX এর বিভিন্ন ধরনের ইভেন্ট রয়েছে যেমন:
ActionEvent(যেমন বাটন ক্লিক)MouseEvent(যেমন মাউস ক্লিক, মাউস মুভ)KeyEvent(যেমন কীবোর্ড ইনপুট)DragEvent(যেমন ড্র্যাগ এবং ড্রপ)
- JavaFX এর বিভিন্ন ধরনের ইভেন্ট রয়েছে যেমন:
- Event Filters vs Event Handlers:
- Event Filters: ইভেন্টের প্রতিক্রিয়া ইভেন্ট ক্যাপচারিং স্টেপ এ ঘটে, যখন ইভেন্ট একটি উপাদান থেকে অন্য উপাদানে পৌঁছানোর আগে।
- Event Handlers: ইভেন্টের প্রতিক্রিয়া বাবলিং স্টেপ এ ঘটে, যখন ইভেন্ট উপাদান থেকে উপাদানে পৌঁছানোর পর।
JavaFX Event Handling Example:
১. Button Click Event Handling:
এটি একটি সাধারণ বাটন ক্লিক ইভেন্ট হ্যান্ডলিং উদাহরণ:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ButtonClickEventExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি বাটন তৈরি করা
Button btn = new Button("Click Me");
// বাটনে ইভেন্ট হ্যান্ডলার যোগ করা
btn.setOnAction(event -> {
System.out.println("Button Clicked!");
});
// StackPane লেআউট তৈরি করা
StackPane root = new StackPane();
root.getChildren().add(btn);
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Button Click Event Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
setOnAction()মেথডটি একটিActionEventতৈরি করে এবং ইভেন্টের জন্য একটি হ্যান্ডলার নির্ধারণ করে। এটি বাটন ক্লিক করার পর"Button Clicked!"মেসেজটি কনসোলে প্রিন্ট করবে।
২. Mouse Event Handling:
এখানে একটি মাউস ক্লিক ইভেন্ট হ্যান্ডলিং উদাহরণ দেওয়া হয়েছে:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class MouseEventExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি টেক্সট তৈরি করা
Text text = new Text("Click anywhere in the window!");
// MouseEvent এর জন্য হ্যান্ডলার যোগ করা
text.setOnMouseClicked(event -> {
System.out.println("Mouse clicked at: " + event.getX() + ", " + event.getY());
});
// StackPane লেআউট তৈরি করা
StackPane root = new StackPane();
root.getChildren().add(text);
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Mouse Event Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
setOnMouseClicked()মেথডটি একটিMouseEventতৈরি করে এবং মাউস ক্লিক হওয়ার পরে ইভেন্টের অবস্থান (X এবং Y কোলাম) প্রিন্ট করে।
৩. Key Event Handling:
এখানে একটি কীবোর্ড ইনপুট ইভেন্ট হ্যান্ডলিং উদাহরণ দেওয়া হয়েছে:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class KeyEventExample extends Application {
@Override
public void start(Stage primaryStage) {
// StackPane লেআউট তৈরি করা
StackPane root = new StackPane();
// KeyEvent এর জন্য হ্যান্ডলার যোগ করা
root.setOnKeyPressed(event -> {
System.out.println("Key pressed: " + event.getText());
});
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Key Event Example");
primaryStage.setScene(scene);
primaryStage.show();
// Focus করতে হবে যাতে কীবোর্ড ইভেন্ট সক্রিয় হয়
scene.requestFocus();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
setOnKeyPressed()মেথডটি একটিKeyEventতৈরি করে এবং কীবোর্ডে যে কী চাপা হবে, তা প্রিন্ট করে।scene.requestFocus()কল করা হয়েছে যাতে কীবোর্ড ইভেন্ট কাজ করতে পারে।
JavaFX Event Handling এর মূল উপাদান:
- Event Type: বিভিন্ন ধরনের ইভেন্ট যেমন
ActionEvent,MouseEvent,KeyEvent, ইত্যাদি। - Event Handler: ইভেন্টের প্রতিক্রিয়া দেখানোর জন্য কোড।
- Event Source: ইভেন্ট জেনারেট করে এমন UI উপাদান।
- Event Listener: ইভেন্টের জন্য সাইন আপ করা অবজেক্ট।
Event Handling Process:
- Event Generation: ইউজারের ইন্টারঅ্যাকশন (যেমন ক্লিক, কীবোর্ড ইনপুট) দ্বারা ইভেন্ট তৈরি হয়।
- Event Propagation: ইভেন্টটি উপাদানগুলির মধ্যে পাস হয় এবং event bubbling বা event capturing হতে পারে।
- Event Handling: ইভেন্টটি প্রাপ্ত হলে নির্দিষ্ট হ্যান্ডলার মেথড কল হয় এবং আউটপুট তৈরি হয়।
সারাংশ:
JavaFX এ ইভেন্ট হ্যান্ডলিং একটি গুরুত্বপূর্ণ এবং শক্তিশালী ফিচার যা আপনাকে ইউজার ইন্টারঅ্যাকশন অনুসারে অ্যাপ্লিকেশনের প্রতিক্রিয়া নির্ধারণ করতে সহায়তা করে। আপনি ActionEvent, MouseEvent, এবং KeyEvent এর মতো বিভিন্ন ধরনের ইভেন্ট হ্যান্ডল করতে পারেন এবং তাদের জন্য যথাযথ হ্যান্ডলার সেট করতে পারেন।
Read more