JavaFX Custom Control তৈরি এবং ব্যবহার একটি গুরুত্বপূর্ণ ধারণা, যেখানে আপনি JavaFX-এর বিদ্যমান কন্ট্রোলগুলির ওপর কাস্টম স্টাইল, আচরণ বা বৈশিষ্ট্য যোগ করতে পারেন। JavaFX আপনাকে Custom Controls তৈরি করার জন্য JavaFX Controls API ব্যবহার করার সুবিধা দেয়, যা আপনাকে আপনার নিজস্ব UI উপাদান তৈরি করার জন্য JavaFX Scene Graph ব্যবহার করতে সহায়তা করে।
Custom Control তৈরি এবং ব্যবহার:
একটি কাস্টম কন্ট্রোল তৈরি করার জন্য আপনাকে একটি নতুন ক্লাস তৈরি করতে হবে যা javafx.scene.control.Control বা javafx.scene.layout.Region থেকে এক্সটেন্ড করবে। এটি আপনাকে কন্ট্রোলের জন্য লেআউট, স্টাইল এবং আচরণ কাস্টমাইজ করার সুযোগ দেয়।
নিচে একটি Custom Control তৈরি করার উদাহরণ দেওয়া হলো:
১. Custom Control তৈরি করা
ধরা যাক, আমরা একটি কাস্টম বাটন তৈরি করব যা একটি Circle-কে ক্লিক করার মাধ্যমে একটি কাস্টম সেশন স্টাইল পরিবর্তন করবে।
CustomButton.java (Custom Control)
import javafx.scene.control.Control;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.layout.StackPane;
public class CustomButton extends Control {
private Circle circle;
// Constructor
public CustomButton() {
// Create a circle as the custom control
circle = new Circle(50, Color.BLUE); // Default size and color
// Add behavior for the circle (on mouse click)
circle.setOnMouseClicked(event -> toggleColor());
// Set the circle in the StackPane for layout
StackPane layout = new StackPane(circle);
setSkin(new CustomButtonSkin(this));
}
// Toggle color of the circle on click
private void toggleColor() {
if (circle.getFill() == Color.BLUE) {
circle.setFill(Color.RED);
} else {
circle.setFill(Color.BLUE);
}
}
}
CustomButtonSkin.java (Custom Skin for Custom Control)
import javafx.scene.control.SkinBase;
import javafx.scene.layout.StackPane;
public class CustomButtonSkin extends SkinBase<CustomButton> {
public CustomButtonSkin(CustomButton control) {
super(control);
StackPane layout = new StackPane();
layout.getChildren().add(control.getChildrenUnmodifiable().get(0)); // Add the circle
// Set this layout as the skin
getChildren().setAll(layout);
}
}
ব্যাখ্যা:
- CustomButton Class:
CustomButtonহল একটি কাস্টম কন্ট্রোল, যাControlথেকে এক্সটেন্ড করা হয়েছে।- এর মধ্যে একটি
Circleতৈরি করা হয়েছে এবং সেটি লেআউটেStackPaneএর মধ্যে রাখা হয়েছে। setOnMouseClicked()মেথড ব্যবহার করে আমরা একটি ইভেন্ট হ্যান্ডলার যোগ করেছি যাতে বাটনটি ক্লিক করলে এর রঙ পরিবর্তন হয়।
- CustomButtonSkin Class:
SkinBaseব্যবহার করে আমরা কাস্টম কন্ট্রোলটির চেহারা কাস্টমাইজ করেছি। এখানে কেবল একটিStackPaneব্যবহার করা হয়েছে এবং এর মধ্যে আমাদের কাস্টম বাটনের অংশ (circle) রাখা হয়েছে।Skinহল কাস্টম কন্ট্রোলের দৃশ্যমান অংশ, এবংControlএর মধ্যে কোনও UI উপাদান রয়েছে তাSkinএর মাধ্যমে কাস্টমাইজ করা হয়।
২. Custom Control ব্যবহার করা
এখন, আমরা এই কাস্টম কন্ট্রোলটি একটি JavaFX Application এর মধ্যে ব্যবহার করব।
MainApp.java (Main Application)
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage primaryStage) {
// Create a custom button
CustomButton customButton = new CustomButton();
// Create a layout and add custom button to it
StackPane root = new StackPane();
root.getChildren().add(customButton);
// Set up the scene and stage
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Custom Control Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- MainApp Class:
CustomButtonব্যবহার করা হয়েছেMainAppক্লাসে, যেখানে একটিStackPaneলেআউটের মধ্যে কাস্টম কন্ট্রোল যোগ করা হয়েছে।- এরপর, এটি
Sceneএর মধ্যে রাখা হয়েছে এবং সেটিStageএ প্রদর্শিত হয়েছে।
৩. আউটপুট
- যখন আপনি
MainAppচালান, একটি উইন্ডো খুলবে যেখানে একটিCircleথাকবে যা ক্লিক করলে রঙ পরিবর্তিত হবে (নীল থেকে লাল এবং আবার ফিরে আসবে)।
৪. Custom Control কাস্টমাইজেশন
- JavaFX Skin:
SkinJavaFX কন্ট্রোলের কাস্টম উপস্থাপনা তৈরি করতে ব্যবহৃত হয়। কাস্টম কন্ট্রোলের আউটলুক পরিবর্তন করতে কাস্টমSkinতৈরি করতে হয়। - Behavior: কাস্টম কন্ট্রোলের জন্য ডিফল্ট আচরণ যেমন মাউস ক্লিক ইভেন্ট, কী প্রেস ইভেন্ট ইত্যাদি কাস্টমাইজ করা যায়। এতে আপনার কন্ট্রোলটির ইন্টারঅ্যাকশন এবং পারফরম্যান্স উন্নত করা সম্ভব।
- Stylesheet (CSS): JavaFX কাস্টম কন্ট্রোলগুলির জন্য CSS দিয়ে স্টাইলিং করা যেতে পারে। আপনি CSS ব্যবহার করে কাস্টম কন্ট্রোলের চেহারা আরও কাস্টমাইজ করতে পারেন।
৫. Custom Control এর সুবিধা:
- UI কাস্টমাইজেশন: JavaFX কাস্টম কন্ট্রোল তৈরি করে আপনি সম্পূর্ণভাবে UI কাস্টমাইজ করতে পারেন, যেমন কাস্টম ড্রইং, ইন্টারঅ্যাকশন, এবং স্টাইল।
- Code Reusability: একবার তৈরি করা কাস্টম কন্ট্রোল বারবার ব্যবহার করা যেতে পারে, যা কোড রিইউসেবিলিটি নিশ্চিত করে।
- JavaFX Controls Integration: আপনি JavaFX এর বিল্ট-ইন কন্ট্রোলগুলিকে কাস্টম কন্ট্রোলের মধ্যে অন্তর্ভুক্ত করতে পারেন, যেমন
Button,TextField,ComboBoxইত্যাদি।
সারাংশ:
- JavaFX-এ Custom Control তৈরি করা JavaFX অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত কার্যকরী। এটি আপনাকে বিদ্যমান কন্ট্রোলের ওপরে নতুন কন্ট্রোল তৈরি করতে এবং আচরণ কাস্টমাইজ করতে সাহায্য করে।
- আপনি Skin এবং Behavior কাস্টমাইজ করে নতুন কন্ট্রোল তৈরি করতে পারেন, এবং CSS দিয়ে স্টাইলিং করতে পারেন।
Read more