Controls এর জন্য Skinning এবং Customization

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

348

JavaFX Controls তে Skinning এবং Customization হল একটি শক্তিশালী কৌশল যার মাধ্যমে আপনি JavaFX-এর ডিফল্ট কন্ট্রোলগুলির চেহারা এবং আচরণ পরিবর্তন করতে পারেন। JavaFX সিস্টেমে, Skinning হল কন্ট্রোলের ভিজ্যুয়াল প্রতিনিধিত্ব (UI) কাস্টমাইজ করা এবং Customization হল কন্ট্রোলের আচরণ বা কার্যকারিতা পরিবর্তন করা।

JavaFX Controls এর জন্য Skinning এবং Customization

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

১. Skinning JavaFX Controls

JavaFX এর ডিফল্ট কন্ট্রোলগুলি CSS ব্যবহার করে স্কিন করতে পারবেন, যেখানে প্রতিটি কন্ট্রোলের স্টাইল প্রপার্টি কাস্টমাইজ করা যায়।

উদাহরণ: Button এর জন্য Custom CSS Skin

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class ButtonSkinExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        // Button তৈরি
        Button btn = new Button("Click Me!");

        // CSS স্টাইল প্রয়োগ করা
        btn.setStyle("-fx-background-color: #4CAF50; -fx-text-fill: white; -fx-font-size: 16px; -fx-padding: 10px;");

        // StackPane layout তৈরি
        StackPane root = new StackPane();
        root.getChildren().add(btn);

        // Scene তৈরি করা
        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Button Skin Example");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

ব্যাখ্যা:

  • এখানে CSS এর মাধ্যমে Button এর পটভূমি রঙ, পাঠ্য রঙ, ফন্ট সাইজ, এবং প্যাডিং কাস্টমাইজ করা হয়েছে।
  • আপনি CSS ফাইল ব্যবহার করে JavaFX কন্ট্রোলের স্টাইল কাস্টমাইজ করতে পারেন, যা অ্যাপ্লিকেশনের চেহারা পরিবর্তন করে।

CSS Example:

.button {
    -fx-background-color: #4CAF50;
    -fx-text-fill: white;
    -fx-font-size: 16px;
    -fx-padding: 10px;
}

এখন আপনি CSS ফাইলটি JavaFX অ্যাপ্লিকেশনে লোড করতে পারেন:

scene.getStylesheets().add("style.css");

২. Custom Skin Class

JavaFX কন্ট্রোলের স্কিন কাস্টমাইজ করার জন্য, আপনি একটি Custom Skin ক্লাস তৈরি করতে পারেন। এটি কন্ট্রোলের স্টাইল এবং তার আচরণ পরিবর্তন করার জন্য ব্যবহৃত হয়।

উদাহরণ: Custom Skin for a Button

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.scene.control.Skin;

public class CustomButtonSkinExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        // Custom Button তৈরি
        Button customButton = new Button("Click Me!");

        // Custom Skin প্রয়োগ করা
        customButton.setSkin(new CustomButtonSkin(customButton));

        // StackPane layout তৈরি
        StackPane root = new StackPane();
        root.getChildren().add(customButton);

        // Scene তৈরি করা
        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Custom Button Skin Example");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

class CustomButtonSkin implements Skin<Button> {
    private final Button button;
    private final Rectangle rectangle;

    public CustomButtonSkin(Button button) {
        this.button = button;
        this.rectangle = new Rectangle(100, 50, Color.GREEN);

        // Button এর আচরণ পরিবর্তন করা (উদাহরণস্বরূপ, হোভার করলে রঙ পরিবর্তন)
        button.setOnMouseEntered(e -> rectangle.setFill(Color.RED));
        button.setOnMouseExited(e -> rectangle.setFill(Color.GREEN));
    }

    @Override
    public Button getSkinnable() {
        return button;
    }

    @Override
    public javafx.scene.Node getNode() {
        return rectangle;
    }

    @Override
    public void dispose() {
        // Clean up if needed
    }
}

ব্যাখ্যা:

  • এখানে CustomButtonSkin ক্লাসটি Skin<Button> ইন্টারফেস ইমপ্লিমেন্ট করে।
  • getNode() মেথডে আমরা একটি Rectangle তৈরি করেছি যা কাস্টম স্কিনের অংশ হবে। এই স্কিনের আচরণ (যেমন, হোভার করলে রঙ পরিবর্তন) Java কোডের মাধ্যমে কাস্টমাইজ করা হয়েছে।

৩. Custom Control

JavaFX তে আপনি নিজের কাস্টম কন্ট্রোলও তৈরি করতে পারেন। এটি করলে আপনি কন্ট্রোলের স্টাইল এবং আচরণ পুরোপুরি কাস্টমাইজ করতে পারবেন।

উদাহরণ: Custom Control

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Control;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class CustomControlExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        // Custom Control তৈরি
        CustomControl customControl = new CustomControl();

        // StackPane layout তৈরি
        StackPane root = new StackPane();
        root.getChildren().add(customControl);

        // Scene তৈরি করা
        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);
    }
}

class CustomControl extends Control {

    public CustomControl() {
        setMinSize(100, 100);
    }

    @Override
    protected void layoutChildren() {
        // Custom layout logic
    }

    @Override
    protected javafx.scene.Node createDefaultSkin() {
        return new CustomControlSkin(this);
    }
}

class CustomControlSkin implements javafx.scene.control.Skin<CustomControl> {
    private final CustomControl customControl;

    public CustomControlSkin(CustomControl customControl) {
        this.customControl = customControl;
    }

    @Override
    public CustomControl getSkinnable() {
        return customControl;
    }

    @Override
    public javafx.scene.Node getNode() {
        return new javafx.scene.shape.Rectangle(100, 100);
    }

    @Override
    public void dispose() {
        // Clean up
    }
}

ব্যাখ্যা:

  • CustomControl কাস্টম কন্ট্রোল তৈরি করতে Control ক্লাস এক্সটেন্ড করা হয়েছে।
  • createDefaultSkin() মেথডে কাস্টম স্কিন তৈরি করা হয়েছে।
  • কাস্টম কন্ট্রোল এবং কাস্টম স্কিন তৈরি করে, আপনি JavaFX এর ডিফল্ট কন্ট্রোলের চেহারা এবং আচরণ পুরোপুরি কাস্টমাইজ করতে পারেন।

সারাংশ:

  1. Skinning হল JavaFX কন্ট্রোলের চেহারা কাস্টমাইজ করার প্রক্রিয়া, যেখানে CSS অথবা Custom Skin ব্যবহার করে কন্ট্রোলের ভিজ্যুয়াল পরিবর্তন করা হয়।
  2. Customization হল কন্ট্রোলের আচরণ কাস্টমাইজ করা, যা UI ইভেন্ট যেমন ক্লিক, হোভার ইত্যাদি নিয়ন্ত্রণ করার মাধ্যমে করা যায়।
  3. JavaFX-এ CSS দিয়ে কন্ট্রোলের স্টাইল পরিবর্তন করা, Custom Skin তৈরি করা এবং Custom Controls তৈরি করার মাধ্যমে JavaFX অ্যাপ্লিকেশনে গভীর কাস্টমাইজেশন করা সম্ভব।

JavaFX-এ কন্ট্রোলের স্কিনিং এবং কাস্টমাইজেশন আপনাকে আধুনিক এবং ব্যক্তিগতকৃত ইউজার ইন্টারফেস তৈরি করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...