JavaFX তে, Event Sources এবং Event Handlers হল দুটি গুরুত্বপূর্ণ বিষয় যা ইভেন্ট ড্রিভেন প্রোগ্রামিংয়ের মূল অংশ। Event Source হল সেই উপাদান (যেমন বাটন, মাউস, কীবোর্ড) যা একটি ইভেন্ট তৈরি করে, এবং Event Handler হল সেই কোড যা ইভেন্টটি হ্যান্ডেল করে, অর্থাৎ ইভেন্টটি ঘটার পর কী করা হবে তা নির্ধারণ করে।
1. Event Sources
Event Sources হল JavaFX UI উপাদান যা ইভেন্ট সৃষ্টি করে, যেমন:
- বাটন (Button)
- মাউস ক্লিক (Mouse Click)
- কীবোর্ডের কী প্রেস (Key Press)
- অন্যান্য বিভিন্ন UI উপাদান
2. Event Handlers
Event Handlers হল ফাংশন বা মেথড যা একটি নির্দিষ্ট ইভেন্টে কার্যকর হয়। যখন ইভেন্ট উৎস (উপাদান) একটি ইভেন্ট তৈরি করে, তখন সেই ইভেন্ট হ্যান্ডলার নির্দিষ্ট কোড এক্সিকিউট করে। এটি সাধারণত Lambda Expressions বা Anonymous Classes ব্যবহার করে সেট করা হয়।
JavaFX এ ইভেন্ট হ্যান্ডলারের জন্য কিছু কমন উপাদান হল:
setOnAction(): একটি অ্যাকশন ইভেন্ট হ্যান্ডল করার জন্য।setOnMouseClicked(): মাউস ক্লিক ইভেন্ট হ্যান্ডল করার জন্য।setOnKeyPressed(): কীবোর্ড কী প্রেস ইভেন্ট হ্যান্ডল করার জন্য।
উদাহরণ: Event Sources এবং Event Handlers
উদাহরণ ১: Button Click Event Handling
এই উদাহরণে, একটি Button তৈরি করা হয়েছে এবং তার ক্লিক ইভেন্ট হ্যান্ডেল করা হয়েছে।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class EventHandlingExample extends Application {
@Override
public void start(Stage primaryStage) {
// বাটন তৈরি
Button btn = new Button("Click Me");
// বাটনে অ্যাকশন হ্যান্ডলার সেট করা
btn.setOnAction(e -> {
System.out.println("Button was clicked!");
});
// লেআউট তৈরি এবং বাটন যোগ করা
StackPane root = new StackPane();
root.getChildren().add(btn);
// দৃশ্য তৈরি
Scene scene = new Scene(root, 300, 200);
primaryStage.setTitle("Button Click Event Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
Button btn = new Button("Click Me");: একটি বাটন তৈরি করা হয়েছে।btn.setOnAction(e -> { ... });: বাটন ক্লিক করার সময় একটি অ্যাকশন ইভেন্ট হ্যান্ডলার সেট করা হয়েছে, যেখানেSystem.out.println()ব্যবহার করে কনসোলে একটি বার্তা প্রিন্ট করা হচ্ছে।
উদাহরণ ২: Mouse Click Event Handling
এখানে একটি StackPane উপাদান তৈরি করা হয়েছে এবং তার মাউস ক্লিক ইভেন্ট হ্যান্ডেল করা হয়েছে।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MouseEventHandlingExample extends Application {
@Override
public void start(Stage primaryStage) {
// StackPane তৈরি
StackPane root = new StackPane();
// মাউস ক্লিক ইভেন্ট হ্যান্ডলার
root.setOnMouseClicked(event -> {
System.out.println("Mouse clicked at: " + event.getX() + ", " + event.getY());
});
// দৃশ্য তৈরি
Scene scene = new Scene(root, 300, 200);
primaryStage.setTitle("Mouse Click Event Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
root.setOnMouseClicked(): মাউস ক্লিক ইভেন্টের জন্য একটি হ্যান্ডলার সেট করা হয়েছে।event.getX()এবংevent.getY()ব্যবহার করে মাউসের ক্লিকের স্থান (X এবং Y) কনসোলে প্রদর্শিত হচ্ছে।
উদাহরণ ৩: Key Press Event Handling
এখানে একটি TextField তৈরি করা হয়েছে এবং তার কীবোর্ড কী প্রেস ইভেন্ট হ্যান্ডেল করা হয়েছে।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class KeyPressEventHandlingExample extends Application {
@Override
public void start(Stage primaryStage) {
// TextField তৈরি
TextField textField = new TextField();
// কী প্রেস ইভেন্ট হ্যান্ডলার
textField.setOnKeyPressed(event -> {
System.out.println("Key pressed: " + event.getText());
});
// লেআউট তৈরি
StackPane root = new StackPane();
root.getChildren().add(textField);
// দৃশ্য তৈরি
Scene scene = new Scene(root, 300, 200);
primaryStage.setTitle("Key Press Event Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
textField.setOnKeyPressed(): কীবোর্ড কী প্রেসের জন্য ইভেন্ট হ্যান্ডলার সেট করা হয়েছে।event.getText()ব্যবহার করে প্রেস করা কীটি কনসোলে প্রদর্শিত হচ্ছে।
JavaFX Event Handling Types
- Action Events:
- সাধারণত বাটন ক্লিক, মেনু আইটেম সিলেক্ট করার সময় ঘটে।
- উদাহরণ:
setOnAction()
- Mouse Events:
- মাউস ক্লিক, মাউস মুভ, মাউস এন্টারে ইভেন্ট ঘটে।
- উদাহরণ:
setOnMouseClicked(),setOnMouseMoved()
- Key Events:
- কীবোর্ড কী প্রেস এবং কী রিলিজ ইভেন্ট ঘটে।
- উদাহরণ:
setOnKeyPressed(),setOnKeyReleased()
- Focus Events:
- UI উপাদান (যেমন, টেক্সটফিল্ড) ফোকাস পেলে বা ফোকাস হারালে ইভেন্ট ঘটে।
- উদাহরণ:
setOnFocusGained(),setOnFocusLost()
JavaFX তে ইভেন্ট সিস্টেম খুবই শক্তিশালী এবং নমনীয়। আপনি বিভিন্ন ধরনের UI উপাদানের মাধ্যমে ইভেন্ট তৈরি করতে পারেন এবং ল্যাম্বডা এক্সপ্রেশন বা অ্যাননিমাস ক্লাস ব্যবহার করে ইভেন্ট হ্যান্ডলার সেট করতে পারেন। JavaFX এর ইভেন্ট হ্যান্ডলিং সিস্টেম অ্যাপ্লিকেশনকে আরও ইন্টারেক্টিভ এবং ইউজার ফ্রেন্ডলি করে তোলে।
Read more