Custom Control তৈরি এবং ব্যবহার

JavaFX Controls এবং Custom Controls তৈরি করা - জাভাএফএক্স (JavaFx) - Java Technologies

317

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);
    }
}

ব্যাখ্যা:

  1. CustomButton Class:
    • CustomButton হল একটি কাস্টম কন্ট্রোল, যা Control থেকে এক্সটেন্ড করা হয়েছে।
    • এর মধ্যে একটি Circle তৈরি করা হয়েছে এবং সেটি লেআউটে StackPane এর মধ্যে রাখা হয়েছে।
    • setOnMouseClicked() মেথড ব্যবহার করে আমরা একটি ইভেন্ট হ্যান্ডলার যোগ করেছি যাতে বাটনটি ক্লিক করলে এর রঙ পরিবর্তন হয়।
  2. 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);
    }
}

ব্যাখ্যা:

  1. MainApp Class:
    • CustomButton ব্যবহার করা হয়েছে MainApp ক্লাসে, যেখানে একটি StackPane লেআউটের মধ্যে কাস্টম কন্ট্রোল যোগ করা হয়েছে।
    • এরপর, এটি Scene এর মধ্যে রাখা হয়েছে এবং সেটি Stage এ প্রদর্শিত হয়েছে।

৩. আউটপুট

  • যখন আপনি MainApp চালান, একটি উইন্ডো খুলবে যেখানে একটি Circle থাকবে যা ক্লিক করলে রঙ পরিবর্তিত হবে (নীল থেকে লাল এবং আবার ফিরে আসবে)।

৪. Custom Control কাস্টমাইজেশন

  1. JavaFX Skin: Skin JavaFX কন্ট্রোলের কাস্টম উপস্থাপনা তৈরি করতে ব্যবহৃত হয়। কাস্টম কন্ট্রোলের আউটলুক পরিবর্তন করতে কাস্টম Skin তৈরি করতে হয়।
  2. Behavior: কাস্টম কন্ট্রোলের জন্য ডিফল্ট আচরণ যেমন মাউস ক্লিক ইভেন্ট, কী প্রেস ইভেন্ট ইত্যাদি কাস্টমাইজ করা যায়। এতে আপনার কন্ট্রোলটির ইন্টারঅ্যাকশন এবং পারফরম্যান্স উন্নত করা সম্ভব।
  3. Stylesheet (CSS): JavaFX কাস্টম কন্ট্রোলগুলির জন্য CSS দিয়ে স্টাইলিং করা যেতে পারে। আপনি CSS ব্যবহার করে কাস্টম কন্ট্রোলের চেহারা আরও কাস্টমাইজ করতে পারেন।

৫. Custom Control এর সুবিধা:

  1. UI কাস্টমাইজেশন: JavaFX কাস্টম কন্ট্রোল তৈরি করে আপনি সম্পূর্ণভাবে UI কাস্টমাইজ করতে পারেন, যেমন কাস্টম ড্রইং, ইন্টারঅ্যাকশন, এবং স্টাইল।
  2. Code Reusability: একবার তৈরি করা কাস্টম কন্ট্রোল বারবার ব্যবহার করা যেতে পারে, যা কোড রিইউসেবিলিটি নিশ্চিত করে।
  3. JavaFX Controls Integration: আপনি JavaFX এর বিল্ট-ইন কন্ট্রোলগুলিকে কাস্টম কন্ট্রোলের মধ্যে অন্তর্ভুক্ত করতে পারেন, যেমন Button, TextField, ComboBox ইত্যাদি।

সারাংশ:

  • JavaFX-এ Custom Control তৈরি করা JavaFX অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত কার্যকরী। এটি আপনাকে বিদ্যমান কন্ট্রোলের ওপরে নতুন কন্ট্রোল তৈরি করতে এবং আচরণ কাস্টমাইজ করতে সাহায্য করে।
  • আপনি Skin এবং Behavior কাস্টমাইজ করে নতুন কন্ট্রোল তৈরি করতে পারেন, এবং CSS দিয়ে স্টাইলিং করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...