JavaFX Controls তে Skinning এবং Customization হল একটি শক্তিশালী কৌশল যার মাধ্যমে আপনি JavaFX-এর ডিফল্ট কন্ট্রোলগুলির চেহারা এবং আচরণ পরিবর্তন করতে পারেন। JavaFX সিস্টেমে, Skinning হল কন্ট্রোলের ভিজ্যুয়াল প্রতিনিধিত্ব (UI) কাস্টমাইজ করা এবং Customization হল কন্ট্রোলের আচরণ বা কার্যকারিতা পরিবর্তন করা।
JavaFX Controls এর জন্য Skinning এবং Customization
- Skinning: JavaFX কন্ট্রোলের স্টাইল বা চেহারা পরিবর্তন করতে আপনাকে Skin ক্লাস ব্যবহার করতে হবে। Skin একটি কন্ট্রোলের ভিজ্যুয়াল উপস্থাপনা (UI) নির্ধারণ করে, এবং CSS দিয়ে কন্ট্রোলের আউটলুক সাজানো যায়।
- 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 এর ডিফল্ট কন্ট্রোলের চেহারা এবং আচরণ পুরোপুরি কাস্টমাইজ করতে পারেন।
সারাংশ:
- Skinning হল JavaFX কন্ট্রোলের চেহারা কাস্টমাইজ করার প্রক্রিয়া, যেখানে CSS অথবা Custom Skin ব্যবহার করে কন্ট্রোলের ভিজ্যুয়াল পরিবর্তন করা হয়।
- Customization হল কন্ট্রোলের আচরণ কাস্টমাইজ করা, যা UI ইভেন্ট যেমন ক্লিক, হোভার ইত্যাদি নিয়ন্ত্রণ করার মাধ্যমে করা যায়।
- JavaFX-এ CSS দিয়ে কন্ট্রোলের স্টাইল পরিবর্তন করা, Custom Skin তৈরি করা এবং Custom Controls তৈরি করার মাধ্যমে JavaFX অ্যাপ্লিকেশনে গভীর কাস্টমাইজেশন করা সম্ভব।
JavaFX-এ কন্ট্রোলের স্কিনিং এবং কাস্টমাইজেশন আপনাকে আধুনিক এবং ব্যক্তিগতকৃত ইউজার ইন্টারফেস তৈরি করতে সাহায্য করে।
Read more