FXML এর মাধ্যমে Controller এবং Events Binding

FXML এর সাথে কাজ - জাভাএফএক্স (JavaFx) - Java Technologies

280

FXML হল একটি XML ভিত্তিক মার্কআপ ভাষা যা JavaFX অ্যাপ্লিকেশনে ইউজার ইন্টারফেস (UI) তৈরি করার জন্য ব্যবহৃত হয়। FXML এর মাধ্যমে UI ডিজাইন করা হয় এবং Controller এর মাধ্যমে UI উপাদানগুলির কার্যকারিতা (events, actions, etc.) নিয়ন্ত্রণ করা হয়।

FXML এবং Controller এর মধ্য দিয়ে UI থেকে Logic এবং UI কন্ট্রোল এর মধ্যে বিভাজন তৈরি হয়, যা অ্যাপ্লিকেশনটিকে পরিষ্কার, সংগঠিত এবং মেইনটেনেবল রাখে।

FXML এর মাধ্যমে Controller এবং Events Binding:

  1. FXML ফাইল: UI উপাদানগুলি XML মার্কআপ ফাইল হিসেবে সংজ্ঞায়িত হয়। FXML ফাইলের মধ্যে UI কন্ট্রোলের বৈশিষ্ট্য, লেআউট, এবং স্টাইল সংজ্ঞায়িত করা হয়।
  2. Controller ক্লাস: Controller ক্লাসটি UI উপাদানগুলির সাথে ইন্টারঅ্যাক্ট করে। এটি FXML ফাইলের সাথে সংযুক্ত থাকে এবং UI উপাদানগুলির ইভেন্ট হ্যান্ডলিং করে।
  3. Events Binding: FXML ফাইলের মধ্যে UI উপাদানগুলোর ইভেন্ট (যেমন, বাটনে ক্লিক, কিবোর্ড ইনপুট) controller ক্লাসের মেথডের সাথে বাইন্ড করা হয়।

ধাপ 1: FXML ফাইল তৈরি করা:

sample.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="sample.Controller">
    <Button text="Click Me!" onAction="#handleButtonClick"/>
</StackPane>

ব্যাখ্যা:

  • এখানে একটি Button তৈরি করা হয়েছে যার টেক্সট "Click Me!"।
  • onAction="#handleButtonClick" এটিতে Button এর ক্লিক ইভেন্ট handleButtonClick মেথডের সাথে বাইন্ড করা হয়েছে। এই মেথডটি controller ক্লাসে উপস্থিত থাকবে।
  • fx:controller="sample.Controller" দ্বারা Controller ক্লাসের অবস্থান উল্লেখ করা হয়েছে, যা FXML ফাইলটি হ্যান্ডেল করবে।

ধাপ 2: Controller ক্লাস তৈরি করা:

Controller.java (Controller ক্লাস):

package sample;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;

public class Controller {

    // Button click event handler method
    @FXML
    private void handleButtonClick(ActionEvent event) {
        // Display an alert when the button is clicked
        Alert alert = new Alert(AlertType.INFORMATION);
        alert.setTitle("Button Clicked");
        alert.setHeaderText("You clicked the button!");
        alert.setContentText("Hello, JavaFX!");
        alert.showAndWait();
    }
}

ব্যাখ্যা:

  • @FXML অ্যানোটেশনটি নির্দেশ করে যে handleButtonClick মেথডটি FXML ফাইল থেকে কল হবে।
  • Button Click Event Handler: handleButtonClick() মেথডটি Button এর ক্লিক ইভেন্ট হ্যান্ডেল করবে এবং একটি Alert ডায়লগ দেখাবে।

ধাপ 3: Main Application Class:

Main.java (Main Application ক্লাস):

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        // Load FXML file
        FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("FXML Example");
        primaryStage.setScene(new Scene(loader.load(), 300, 250));
        primaryStage.show();
    }

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

ব্যাখ্যা:

  • FXMLLoader ব্যবহার করে FXML ফাইলটি লোড করা হয়।
  • primaryStage.setScene(new Scene(loader.load(), 300, 250)) - ফাইলটি লোড করার পর, UI-টি একটি নতুন Scene হিসেবে স্টেজে সেট করা হয়।
  • launch(args) এর মাধ্যমে অ্যাপ্লিকেশনটি চালু হয়।

ধাপ 4: প্রোজেক্ট কাঠামো:

project-folder/
|-- src/
|   |-- sample/
|       |-- Main.java
|       |-- Controller.java
|       |-- sample.fxml
|-- lib/
|-- bin/

আউটপুট:

  • অ্যাপ্লিকেশন চালু হলে একটি উইন্ডো প্রদর্শিত হবে যা একটি বাটন "Click Me!" ধারণ করবে।
  • যখন আপনি বাটনে ক্লিক করবেন, একটি Alert ডায়লগ "You clicked the button!" প্রদর্শিত হবে।

FXML এবং Controller এর মাধ্যমে Events Binding এর সুবিধা:

  1. Separation of Concerns: FXML ব্যবহার করলে UI এবং লজিকের মধ্যে একটি পরিষ্কার বিভাজন থাকে। UI (FXML) এবং লজিক (Controller) আলাদা হয়ে যায়, যা কোড মেইনটেনেন্স এবং ডিবাগিং সহজ করে।
  2. Declarative UI Design: FXML ব্যবহার করে UI ডিজাইন করা declarative ভাষায় হয়, যা অনেক সহজ এবং পরিচিত (HTML এর মতো)।
  3. Event Handling: ইভেন্ট হ্যান্ডলিং সোজা এবং পরিষ্কার, কারণ আপনি FXML ফাইলের মাধ্যমে ইভেন্ট হ্যান্ডলারকে Controller ক্লাসের মেথডের সাথে বাইন্ড করতে পারেন।

অতিরিক্ত ধারণা:

  • FXML ফাইল থেকে Controller ক্লাসে ডেটা পাস: আপনি FXML ফাইল থেকে Controller ক্লাসে ডেটা পাস করতে পারেন এবং UI উপাদানগুলির মাধ্যমে তা দেখাতে পারেন।
  • FXML Loader এর মাধ্যমে ডায়নামিক লোডিং: আপনি একাধিক Scene বা UI কন্ট্রোল FXML ফাইলের মাধ্যমে ডায়নামিকভাবে লোড করতে পারেন।

এভাবে JavaFX এর FXML এবং Controller ক্লাসের মাধ্যমে events binding করা হয়, যা অ্যাপ্লিকেশন ডিজাইনে পরিষ্কারতা এবং কার্যকারিতা বৃদ্ধি করে।

Content added By
Promotion

Are you sure to start over?

Loading...