JavaFX-এ, FXML একটি XML ভিত্তিক markup ভাষা যা UI ডিজাইন করতে ব্যবহৃত হয়। FXML ফাইলের মাধ্যমে, UI কম্পোনেন্টগুলিকে ডিক্লেয়ার করা হয় এবং সেই UI কোড Java কোড থেকে আলাদা করা হয়। এই পদ্ধতি UI এবং লজিকের মধ্যে separation of concerns নিশ্চিত করে, এবং এটি UI ডিজাইনারদের Java কোড থেকে আলাদা করে কাজ করতে সক্ষম করে।
FXML ফাইল তৈরি এবং ব্যবহার করতে হলে, JavaFX অ্যাপ্লিকেশন তৈরির জন্য কিছু নির্দিষ্ট পদক্ষেপ অনুসরণ করতে হয়। নিচে একটি উদাহরণ দেওয়া হলো যা আপনাকে FXML ফাইল ব্যবহার করার প্রক্রিয়া দেখাবে।
ধাপ ১: JavaFX অ্যাপ্লিকেশন তৈরি করা
আমরা JavaFX অ্যাপ্লিকেশন তৈরি করব যেখানে FXML ফাইল থেকে UI লোড করা হবে এবং Java কোডের সাথে তা যুক্ত করা হবে।
উদাহরণ: JavaFX অ্যাপ্লিকেশন - FXML ফাইল ব্যবহার
১. FXML ফাইল তৈরি করুন:
FXML ফাইল সাধারণত .fxml এক্সটেনশন নিয়ে থাকে। নিচে একটি সাধারণ FXML ফাইলের উদাহরণ দেওয়া হল:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.StackPane?>
<StackPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainController">
<Button text="Click Me!" onAction="#handleButtonAction" />
</StackPane>
ব্যাখ্যা:
StackPane: UI কম্পোনেন্টগুলিকে স্ট্যাক করার জন্য ব্যবহৃত একটি লেআউট।Button: একটি বাটন তৈরি করা হয়েছে যার টেক্সট হল "Click Me!" এবং এরonActionঅ্যাট্রিবিউট সেট করা হয়েছে একটি মেথডের জন্য (#handleButtonAction)।fx:controller: FXML ফাইলের জন্য Java কন্ট্রোলার ক্লাস নির্দিষ্ট করে, যাতে সেই ক্লাস থেকে কন্ট্রোল করা যেতে পারে।
২. Java Controller ক্লাস তৈরি করুন:
এখন আমাদের একটি Java Controller ক্লাস তৈরি করতে হবে যা FXML ফাইলের UI উপাদানগুলোর সাথে ইন্টারঅ্যাক্ট করবে। এখানে, handleButtonAction মেথডের মাধ্যমে বাটন ক্লিক করার পর একটি সেম্পল অ্যাকশন হ্যান্ডেল করা হবে।
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class MainController {
@FXML
private Button myButton;
// এই মেথডটি FXML ফাইলের button এর onAction এর সাথে সংযুক্ত
@FXML
private void handleButtonAction() {
System.out.println("Button clicked!");
myButton.setText("You clicked me!");
}
}
ব্যাখ্যা:
@FXMLঅ্যানোটেশন দিয়ে Java ফিল্ড এবং মেথডগুলোকে FXML ফাইলের সাথে সম্পর্কিত করা হয়।handleButtonAction()মেথড বাটন ক্লিক হলে কল হবে এবং এটি কনসোলে একটি বার্তা প্রিন্ট করবে এবং বাটনের টেক্সট পরিবর্তন করবে।
৩. JavaFX অ্যাপ্লিকেশন (Main Application Class):
এখন আমাদের একটি Main অ্যাপ্লিকেশন ক্লাস তৈরি করতে হবে যা FXML ফাইল লোড করবে এবং JavaFX অ্যাপ্লিকেশনটি চালু করবে।
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MainApplication extends Application {
@Override
public void start(Stage primaryStage) {
try {
// FXML ফাইল লোড করা
FXMLLoader loader = new FXMLLoader(getClass().getResource("main.fxml"));
StackPane root = loader.load();
// দৃশ্য তৈরি করা
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("FXML Example");
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
FXMLLoaderক্লাস ব্যবহার করে আমরা FXML ফাইল লোড করছি।getClass().getResource("main.fxml"): এটি FXML ফাইলটি লোড করতে ব্যবহৃত হয় (এই উদাহরণেmain.fxmlফাইলটি একই প্যাকেজে রয়েছে)।StackPaneএর মধ্যে FXML ফাইলের UI উপাদানগুলো লোড করা হবে এবং দৃশ্য (Scene) সেট করা হবে।
ধাপ ২: প্রোজেক্ট স্ট্রাকচার
আপনার প্রোজেক্টের ফোল্ডার স্ট্রাকচার এভাবে থাকতে পারে:
/src
/MainApplication.java (JavaFX অ্যাপ্লিকেশন ক্লাস)
/MainController.java (FXML কন্ট্রোলার ক্লাস)
/main.fxml (FXML ফাইল)
ধাপ ৩: প্রোজেক্ট কম্পাইল এবং রান করা
- FXML ফাইল সংযুক্ত করা: JavaFX অ্যাপ্লিকেশন রান করার সময় নিশ্চিত করুন যে
FXMLফাইলটি সঠিকভাবে Java ক্লাসের সাথে সংযুক্ত হয়েছে। - FXML লোডিং: FXML ফাইলটি লোড করার সময়
FXMLLoaderব্যবহার করে Java ক্লাসের সাথে সংযুক্ত করুন। - FXML ফাইল চালানো: আপনার JavaFX অ্যাপ্লিকেশন ক্লাস চালানোর পর, JavaFX UI আপনার FXML ফাইল থেকে লোড হবে এবং Java কন্ট্রোলার থেকে ইন্টারঅ্যাক্ট করবে।
FXML ফাইল JavaFX অ্যাপ্লিকেশনের UI ডিজাইন করতে একটি শক্তিশালী এবং সুবিধাজনক উপায়। Java কোড এবং UI ডিজাইনকে আলাদা করে রেখে UI এবং লজিকের মধ্যে separation of concerns নিশ্চিত করা হয়। FXML ফাইলের মাধ্যমে ইউজার ইন্টারফেস ডিজাইন করা সহজ এবং এটি JavaFX অ্যাপ্লিকেশনের উন্নয়নকে আরও সুবিধাজনক ও পরিষ্কার করে তোলে।
Read more