XML এবং JavaFX Integration হল একটি কৌশল যা XML ডেটাকে JavaFX অ্যাপ্লিকেশনগুলিতে লোড, প্রদর্শন এবং ম্যানিপুলেট করতে ব্যবহৃত হয়। XML ডেটা সাধারণত কনফিগারেশন, ফিড বা অন্যান্য ধরনের ডেটা স্টোরেজ ফরম্যাট হিসেবে ব্যবহৃত হয় এবং JavaFX হল একটি শক্তিশালী GUI লাইব্রেরি যা ডেক্সটপ অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। XML এবং JavaFX ইন্টিগ্রেশন সাধারণত XML থেকে ডেটা পড়ে, সেটি একটি গ্রাফিক্যাল ইন্টারফেসে রেন্ডার বা প্রদর্শন করা এবং পরে XML ডেটা আপডেট করার জন্য ব্যবহৃত হয়।
এখানে JavaFX এর সাথে XML ডেটার ইন্টিগ্রেশন করার কয়েকটি উপায় এবং উদাহরণ আলোচনা করা হয়েছে।
JavaFX অ্যাপ্লিকেশনে XML ডেটা ব্যবহার করার জন্য প্রথমেই XML ডেটাকে পার্স করতে হবে, তারপর সেই ডেটা JavaFX এর UI উপাদানগুলিতে (যেমন, Label
, TextField
, TableView
ইত্যাদি) লোড করা হবে।
ধরা যাক একটি XML ডকুমেন্ট রয়েছে যা একটি বইয়ের তথ্য ধারণ করে, এবং আমরা সেই তথ্য JavaFX অ্যাপ্লিকেশনে প্রদর্শন করতে চাই।
<bookstore>
<book>
<title>Learning Java</title>
<author>John Doe</author>
<price>50.00</price>
</book>
<book>
<title>Advanced Java</title>
<author>Jane Doe</author>
<price>70.00</price>
</book>
</bookstore>
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;
public class XMLJavaFXIntegration extends Application {
@Override
public void start(Stage primaryStage) {
try {
// XML ডকুমেন্ট পার্স করার জন্য DocumentBuilder তৈরি করুন
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("book.xml");
// VBox সেটআপ
VBox vbox = new VBox(10);
// XML থেকে ডেটা বের করা
NodeList bookList = doc.getElementsByTagName("book");
for (int i = 0; i < bookList.getLength(); i++) {
Element bookElement = (Element) bookList.item(i);
String title = bookElement.getElementsByTagName("title").item(0).getTextContent();
String author = bookElement.getElementsByTagName("author").item(0).getTextContent();
String price = bookElement.getElementsByTagName("price").item(0).getTextContent();
// JavaFX তে বইয়ের তথ্য প্রদর্শন
Label titleLabel = new Label("Title: " + title);
Label authorLabel = new Label("Author: " + author);
Label priceLabel = new Label("Price: $" + price);
vbox.getChildren().addAll(titleLabel, authorLabel, priceLabel);
}
// Scene তৈরি এবং Stage এ সেট করা
Scene scene = new Scene(vbox, 300, 200);
primaryStage.setTitle("Book Store");
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
DocumentBuilderFactory
এবং DocumentBuilder
ব্যবহার করে book.xml
ফাইলটি পার্স করা হয়েছে।getElementsByTagName
ব্যবহার করে XML থেকে বইয়ের শিরোনাম, লেখক, এবং দাম বের করা হয়েছে।VBox
ব্যবহার করে একটি ভরাট কন্টেইনার তৈরি করা হয়েছে, যেখানে বইয়ের তথ্য (শিরোনাম, লেখক, দাম) Label
এ প্রদর্শন করা হয়েছে।Scene
এবং Stage
ব্যবহার করে GUI সৃষ্টির মাধ্যমে তথ্য প্রদর্শন করা হয়েছে।XML ডেটা একটি টেবিল আকারে প্রদর্শন করার জন্য TableView
ব্যবহার করা যেতে পারে, যা ডেটাকে কলাম আকারে প্রদর্শন করে। এটি একাধিক লাইনের ডেটা এবং আরও জটিল তথ্য প্রদর্শনে কার্যকর।
TableView
তে প্রদর্শনimport javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.beans.property.SimpleStringProperty;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;
public class TableViewXMLIntegration extends Application {
public class Book {
private SimpleStringProperty title;
private SimpleStringProperty author;
private SimpleStringProperty price;
public Book(String title, String author, String price) {
this.title = new SimpleStringProperty(title);
this.author = new SimpleStringProperty(author);
this.price = new SimpleStringProperty(price);
}
public String getTitle() { return title.get(); }
public String getAuthor() { return author.get(); }
public String getPrice() { return price.get(); }
}
@Override
public void start(Stage primaryStage) {
try {
// XML ডকুমেন্ট পার্স
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("book.xml");
// TableView তৈরি
TableView<Book> table = new TableView<>();
// Column তৈরি
TableColumn<Book, String> titleColumn = new TableColumn<>("Title");
titleColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getTitle()));
TableColumn<Book, String> authorColumn = new TableColumn<>("Author");
authorColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getAuthor()));
TableColumn<Book, String> priceColumn = new TableColumn<>("Price");
priceColumn.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getPrice()));
table.getColumns().addAll(titleColumn, authorColumn, priceColumn);
// XML থেকে ডেটা বের করা এবং TableView এ যোগ করা
NodeList bookList = doc.getElementsByTagName("book");
for (int i = 0; i < bookList.getLength(); i++) {
Element bookElement = (Element) bookList.item(i);
String title = bookElement.getElementsByTagName("title").item(0).getTextContent();
String author = bookElement.getElementsByTagName("author").item(0).getTextContent();
String price = bookElement.getElementsByTagName("price").item(0).getTextContent();
// TableView তে বইয়ের তথ্য যোগ করা
table.getItems().add(new Book(title, author, price));
}
// Layout এবং Scene তৈরি
VBox vbox = new VBox(table);
Scene scene = new Scene(vbox, 400, 300);
primaryStage.setTitle("Book Store");
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
TableView
:TableColumn
তৈরি করা হয়েছে বইয়ের শিরোনাম, লেখক এবং দাম প্রদর্শনের জন্য।CellValueFactory
ব্যবহার করে একটি SimpleStringProperty
তৈরি করা হয়েছে, যা TableView কে ডেটা দেখাতে সাহায্য করে।TableView
এর মধ্যে ডেটা যোগ করা হয়েছে।JavaFX অ্যাপ্লিকেশন থেকে XML ডেটা আপডেট করতে হলে, প্রথমে XML ডেটাকে ম্যানিপুলেট করতে হবে এবং তারপর সেই পরিবর্তিত ডেটা JavaFX UI তে আবার রেন্ডার করতে হবে।
আপনি যদি XML ডেটাতে কোনো পরিবর্তন করতে চান (যেমন, বইয়ের দাম আপডেট করা), তাহলে XML পার্সিং এর পরে ডেটা পরিবর্তন করে সেই পরিবর্তিত XML ডকুমেন্টটি আবার সেভ করতে হবে।
XML এবং JavaFX ইন্টিগ্রেশন JavaFX অ্যাপ্লিকেশনগুলিতে ডেটা লোড ও প্রদর্শনের জন্য একটি শক্তিশালী উপায়। XML ডেটা পার্স করে Label
, TableView
, এবং অন্যান্য JavaFX UI উপাদানগুলিতে তা প্রদর্শন করা এবং পরবর্তীতে XML ডেটাকে আপডেট করে JavaFX UI তে রিফ্রেশ করা সম্ভব। এটি ডেটা-ভিত্তিক অ্যাপ্লিকেশন তৈরিতে সহায়ক।
JavaFX একটি আধুনিক GUI (Graphical User Interface) ফ্রেমওয়ার্ক যা Java ব্যবহার করে ডেস্কটপ এবং মোবাইল অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। JavaFX এ XML ব্যবহারের মাধ্যমে ইউজার ইন্টারফেস (UI) ডেভেলপ করা এবং Scene Management করা যায়। JavaFX এর সাথে XML ব্যবহারের মাধ্যমে UI তৈরি করতে FXML
ফাইল ব্যবহার করা হয়, যা XML ভিত্তিক একটি ভাষা যা ইউজার ইন্টারফেসের লেআউট এবং স্ট্রাকচার নির্ধারণ করে। এখানে, JavaFX এ XML ব্যবহার এবং Scene Management করার প্রক্রিয়া সম্পর্কে বিস্তারিত আলোচনা করা হলো।
FXML হলো একটি XML ডিক্লেয়ারেটিভ ভাষা যা JavaFX এর UI তৈরি করতে ব্যবহৃত হয়। এটি JavaFX এর উপাদানগুলির লেআউট এবং গঠন নির্ধারণ করতে ব্যবহৃত হয়। FXML ফাইল ব্যবহার করার মাধ্যমে UI ডিজাইন কোড এবং লজিক থেকে আলাদা রাখা যায়, যা কোডের রিডেবিলিটি এবং রক্ষণাবেক্ষণ সহজ করে তোলে।
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.control.Button?>
<StackPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.MyController">
<Button text="Click Me!" onAction="#handleButtonClick"/>
</StackPane>
এখানে StackPane
এবং Button
JavaFX এর UI উপাদান, যেখানে onAction
এট্রিবিউটের মাধ্যমে একটি ইভেন্ট হ্যান্ডলার (Java মেথড) লিংক করা হয়েছে।
FXML ফাইল লোড করার জন্য FXMLLoader
ব্যবহার করা হয়। FXMLLoader
ক্লাসটি JavaFX এ XML ডকুমেন্ট (FXML ফাইল) লোড করে এবং এর সাথে সম্পর্কিত কন্ট্রোলার ক্লাসের মধ্যে প্রপার্টি এবং ইভেন্ট হ্যান্ডলারগুলিকে অ্যাসোসিয়েট করে।
import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// FXML লোড করা
FXMLLoader loader = new FXMLLoader(getClass().getResource("scene.fxml"));
StackPane root = loader.load();
// Scene তৈরি
Scene scene = new Scene(root, 300, 250);
// Stage সেট করা
primaryStage.setTitle("FXML Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে FXMLLoader
ব্যবহার করে FXML ফাইল লোড করা হয়েছে, তারপর Scene
তৈরি করা হয়েছে এবং সেটি Stage
এ দেখানো হয়েছে।
JavaFX এ Scene হল ইউজার ইন্টারফেসের উপাদানগুলির একটি কনটেইনার। আপনি Scene এর মধ্যে বিভিন্ন JavaFX UI উপাদান যেমন Buttons
, Labels
, TextFields
, ইত্যাদি যুক্ত করতে পারেন। JavaFX এ একাধিক Scene ব্যবহার করা সম্ভব এবং এগুলি সহজেই সুইচ করা যেতে পারে।
FadeTransition
, TranslateTransition
, ইত্যাদি।ধরা যাক, আমাদের দুইটি Scene রয়েছে: একটি Login Scene এবং একটি Home Scene। এক Scene থেকে অন্য Scene এ সুইচ করার জন্য, আমরা JavaFX এ Stage.setScene()
ব্যবহার করতে পারি।
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class SceneSwitcherApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// প্রথম Scene লোড করা (Login)
FXMLLoader loginLoader = new FXMLLoader(getClass().getResource("login.fxml"));
StackPane loginRoot = loginLoader.load();
Scene loginScene = new Scene(loginRoot, 300, 250);
// দ্বিতীয় Scene লোড করা (Home)
FXMLLoader homeLoader = new FXMLLoader(getClass().getResource("home.fxml"));
StackPane homeRoot = homeLoader.load();
Scene homeScene = new Scene(homeRoot, 300, 250);
// login scene থেকে home scene এ পরিবর্তন করা
// login.fxml এর মধ্যে একটি button এর মাধ্যমে homeScene সেট করা হবে
primaryStage.setTitle("Scene Switcher");
primaryStage.setScene(loginScene);
primaryStage.show();
// Home scene এর জন্য button event handler
// homeScene.setOnAction(e -> primaryStage.setScene(homeScene)); // Example Action
}
public static void main(String[] args) {
launch(args);
}
}
এখানে primaryStage.setScene()
ব্যবহার করে Scene পরিবর্তন করা হচ্ছে।
FXML ফাইল এবং Java কোডের মধ্যে যোগাযোগের জন্য Controller
ক্লাস ব্যবহার করা হয়। FXML
ফাইলের মধ্যে থাকা UI উপাদানগুলির সাথে Controller
এর মেথড এবং প্রপার্টি ম্যানেজ করার জন্য, FXML এর fx:controller
এট্রিবিউট ব্যবহার করা হয়।
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class MyController {
@FXML
private Button myButton;
@FXML
public void handleButtonClick() {
System.out.println("Button clicked!");
}
}
এখানে handleButtonClick()
মেথডটি FXML
ফাইলের মধ্যে থাকা Button
এর onAction
ইভেন্টের মাধ্যমে কল করা হবে।
Scene Builder হল একটি GUI টুল যা FXML ফাইল তৈরি করতে সাহায্য করে। এটি ইউজার ইন্টারফেস ডিজাইনার হিসেবে কাজ করে এবং গ্রাফিক্যালভাবে UI তৈরি করার সুবিধা দেয়। Scene Builder ব্যবহার করে আপনি সহজেই FXML ফাইল তৈরি করতে পারেন এবং এটি সরাসরি JavaFX প্রোজেক্টে যুক্ত করতে পারেন।
JavaFX এ XML ব্যবহার করার জন্য FXML ফাইল একটি শক্তিশালী এবং কার্যকর পদ্ধতি। এটি UI ডিজাইন এবং কোডিং আলাদা করে, যা কোড রিডেবিলিটি এবং রক্ষণাবেক্ষণ সহজ করে তোলে। JavaFX তে Scene Management এবং Scene Switching ব্যবহার করে আপনি অ্যাপ্লিকেশনে বিভিন্ন UI পর্দার মধ্যে দ্রুত পরিবর্তন করতে পারেন। FXML এবং Scene Management সহ JavaFX একটি খুবই শক্তিশালী এবং নমনীয় GUI টুল।
FXML হল একটি XML ভিত্তিক ফাইল ফরম্যাট যা JavaFX UI তৈরি করতে ব্যবহৃত হয়। FXML-এর মাধ্যমে আপনি JavaFX অ্যাপ্লিকেশনের UI ডিজাইন করতে পারেন এবং UI থেকে পৃথকভাবে Java কোড (ব্যাকএন্ড) লিখতে পারেন, যা MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে। এটি JavaFX অ্যাপ্লিকেশন তৈরিতে ডিজাইনার এবং ডেভেলপারদের জন্য স্বতন্ত্রভাবে কাজ করার সুযোগ প্রদান করে।
FXML একটি XML ডোকুমেন্ট যা JavaFX কন্ট্রোল এবং উপাদানগুলিকে চিহ্নিত করে। এই ফাইলটি JavaFX UI ডেভেলপমেন্টের জন্য ব্যবহৃত হয় এবং এটি Java কোডের সাথে যুক্ত হয়ে কাজ করে। FXML লোডার (FXMLLoader) এই FXML ফাইলটি লোড করে এবং প্রপার JavaFX UI কন্ট্রোল তৈরি করে।
FXMLLoader
ব্যবহার করে FXML ফাইলটি লোড করুন।এখানে আমরা একটি সহজ UI তৈরি করব যেখানে একটি বাটন এবং একটি টেক্সট ফিল্ড থাকবে। বাটনে ক্লিক করলে একটি ম্যাসেজ টেক্সট ফিল্ডে প্রদর্শিত হবে।
MainUI.fxml
:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.*?>
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainController">
<children>
<Button text="Click Me" fx:id="button" layoutX="100.0" layoutY="100.0" onAction="#handleButtonClick"/>
<TextField fx:id="textField" layoutX="100.0" layoutY="150.0" />
</children>
</AnchorPane>
fx:id
এর মাধ্যমে UI উপাদানগুলিকে চিহ্নিত করা হয়েছে।onAction="#handleButtonClick"
এর মাধ্যমে বাটন ক্লিক করার পর যে ফাংশনটি কল হবে তা নির্দিষ্ট করা হয়েছে।FXML ফাইলের সাথে যুক্ত Java কোড লিখতে আমরা একটি কন্ট্রোলার ক্লাস তৈরি করব। কন্ট্রোলার ক্লাসের মধ্যে FXML ডকুমেন্টের উপাদানগুলি কন্ট্রোল এবং পরিচালনা করা হবে।
MainController.java
:
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
public class MainController {
@FXML
private Button button; // FXML ফাইল থেকে Button আইডি লোড হবে
@FXML
private TextField textField; // FXML ফাইল থেকে TextField আইডি লোড হবে
@FXML
private void handleButtonClick() {
textField.setText("Hello, JavaFX!"); // বাটন ক্লিক হলে টেক্সট ফিল্ডে মেসেজ প্রদর্শন
}
}
@FXML
অ্যানোটেশন ব্যবহার করে আমরা FXML ফাইলের UI উপাদানগুলির সাথে Java কোডের লিঙ্ক তৈরি করেছি।handleButtonClick()
মেথডটি বাটনে ক্লিক করলে কল হবে এবং টেক্সট ফিল্ডে একটি স্ট্রিং সেট করবে।এখন আমরা FXMLLoader
ব্যবহার করে FXML ফাইলটি লোড করব এবং JavaFX অ্যাপ্লিকেশন চালাব।
MainApp.java
:
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// FXML লোড করা
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainUI.fxml"));
AnchorPane root = loader.load();
// Scene তৈরি করা
Scene scene = new Scene(root, 300, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("FXML Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
FXMLLoader
ব্যবহার করে MainUI.fxml
ফাইলটি লোড করা হয়েছে।Scene
এর মধ্যে প্যাকেজ করা হয়েছে এবং Stage
এ সেট করা হয়েছে।উপরের কোডের মাধ্যমে আপনি FXML ব্যবহার করে JavaFX UI তৈরি করেছেন। আপনি যখন অ্যাপ্লিকেশনটি রান করবেন, একটি উইন্ডো খুলবে যেখানে একটি বাটন এবং একটি টেক্সট ফিল্ড থাকবে। যখন আপনি বাটনে ক্লিক করবেন, টেক্সট ফিল্ডে "Hello, JavaFX!" প্রদর্শিত হবে।
fx:id
এবং onAction
ইত্যাদি ব্যবহার করার সময় কনভেনশন মেনে চলুন। এর মাধ্যমে কোডে ভুল কম হবে।FXMLLoader.load()
এ কিছু প্যারামিটার প্রদান করা।FXML এবং FXMLLoader
ব্যবহার করে JavaFX UI তৈরি করার কৌশলটি UI এবং ব্যাকএন্ড লজিককে আলাদা রাখতে সহায়তা করে এবং অ্যাপ্লিকেশনটিকে পরিষ্কার, সুরক্ষিত এবং পরিচালনাযোগ্য করে তোলে। FXML একটি শক্তিশালী টুল যা ডিজাইনার এবং ডেভেলপারদের আলাদা ভাবে কাজ করার সুযোগ দেয়, এবং JavaFX অ্যাপ্লিকেশন তৈরিতে কার্যকরী।
JavaFX এবং XML Integration একটি গুরুত্বপূর্ণ প্রযুক্তিগত দিক, বিশেষত যখন আপনি GUI (Graphical User Interface) অ্যাপ্লিকেশন তৈরি করতে চান যা XML ডেটা পার্স বা ম্যানিপুলেট করে। JavaFX একটি শক্তিশালী গ্রাফিক্যাল ফ্রেমওয়ার্ক, যা Java তে ইউজার ইন্টারফেস তৈরি করার জন্য ব্যবহৃত হয়, এবং XML হল ডেটা বিনিময়ের একটি সাধারণ ফরম্যাট। JavaFX এবং XML এর মধ্যে ইন্টিগ্রেশন আপনাকে ডায়নামিক ইউজার ইন্টারফেস তৈরি করতে সাহায্য করতে পারে, যা XML ডেটা থেকে ইনফরমেশন নিয়ে ডিসপ্লে করতে পারে।
JavaFX দিয়ে ইউজার ইন্টারফেস ডিজাইন করতে এবং XML থেকে ডেটা লোড বা সেভ করতে পারলে আপনি অনেক কার্যকর অ্যাপ্লিকেশন তৈরি করতে পারবেন। XML ডেটা এক্সচেঞ্জ করতে XML Parsing এবং Binding ব্যবহৃত হয় এবং JavaFX UI উপাদানগুলির সঙ্গে এই ডেটা দেখানো যায়।
XML Parsing মানে হল XML ডকুমেন্ট থেকে ডেটা বের করা এবং Java অবজেক্টে রূপান্তর করা। JavaFX এর মধ্যে XML ডেটা লোড করতে JAXB, DOM, বা SAX API ব্যবহার করা যেতে পারে।
আপনি JavaFX UI উপাদানগুলি (যেমন TextField, Label, TableView) XML ডেটার সাথে ইন্টিগ্রেট করে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি XML ফাইল থেকে ডেটা লোড করে একটি টেবিলে প্রদর্শন করতে পারেন।
ধরা যাক, আপনার একটি XML ফাইল আছে, যা কিছু বইয়ের তথ্য ধারণ করছে এবং আপনি JavaFX ব্যবহার করে সেই ডেটা একটি টেবিলে প্রদর্শন করতে চান।
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title>Java Programming</title>
<author>John Doe</author>
<price>39.99</price>
</book>
<book>
<title>Advanced Java</title>
<author>Jane Smith</author>
<price>49.99</price>
</book>
</bookstore>
এখন, আমরা JavaFX অ্যাপ্লিকেশন তৈরি করব, যা এই XML ফাইল থেকে বইয়ের তথ্য পড়বে এবং তা টেবিলের মাধ্যমে প্রদর্শন করবে।
public class Book {
private String title;
private String author;
private double price;
public Book(String title, String author, double price) {
this.title = title;
this.author = author;
this.price = price;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public double getPrice() {
return price;
}
}
এটি একটি সাধারণ JavaFX অ্যাপ্লিকেশন যা XML ডেটা থেকে বইয়ের তথ্য লোড করে এবং JavaFX টেবিলে প্রদর্শন করে।
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.File;
public class BookStoreApp extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
// TableView setup
TableView<Book> table = new TableView<>();
TableColumn<Book, String> titleColumn = new TableColumn<>("Title");
TableColumn<Book, String> authorColumn = new TableColumn<>("Author");
TableColumn<Book, Double> priceColumn = new TableColumn<>("Price");
titleColumn.setCellValueFactory(data -> new SimpleStringProperty(data.getValue().getTitle()));
authorColumn.setCellValueFactory(data -> new SimpleStringProperty(data.getValue().getAuthor()));
priceColumn.setCellValueFactory(data -> new SimpleDoubleProperty(data.getValue().getPrice()).asObject());
table.getColumns().add(titleColumn);
table.getColumns().add(authorColumn);
table.getColumns().add(priceColumn);
// Load data from XML
File xmlFile = new File("bookstore.xml");
table.getItems().addAll(loadBooksFromXML(xmlFile));
StackPane root = new StackPane();
root.getChildren().add(table);
Scene scene = new Scene(root, 600, 400);
primaryStage.setTitle("Book Store");
primaryStage.setScene(scene);
primaryStage.show();
}
private List<Book> loadBooksFromXML(File xmlFile) {
List<Book> books = new ArrayList<>();
try {
// Parse XML file
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(xmlFile);
NodeList bookNodes = document.getElementsByTagName("book");
for (int i = 0; i < bookNodes.getLength(); i++) {
Node bookNode = bookNodes.item(i);
if (bookNode.getNodeType() == Node.ELEMENT_NODE) {
Element bookElement = (Element) bookNode;
String title = bookElement.getElementsByTagName("title").item(0).getTextContent();
String author = bookElement.getElementsByTagName("author").item(0).getTextContent();
double price = Double.parseDouble(bookElement.getElementsByTagName("price").item(0).getTextContent());
books.add(new Book(title, author, price));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return books;
}
}
loadBooksFromXML
মেথডটি XML ফাইল পার্স করে এবং Book
অবজেক্টে ডেটা লোড করে। এখানে DOM Parsing ব্যবহার করা হয়েছে।TableView
ব্যবহার করা হয়েছে XML ডেটা প্রদর্শনের জন্য। TableColumn
গুলি নির্ধারণ করা হয়েছে টেবিলের কলাম হিসেবে এবং তাদের মধ্যে XML থেকে পাওয়া ডেটা প্রদর্শিত হবে।TableView
ব্যবহার করা হয়েছে যা তিনটি কলাম: Title
, Author
, এবং Price
দিয়ে বইয়ের তথ্য দেখাবে।SimpleStringProperty
এবং SimpleDoubleProperty
ব্যবহার করা হয়েছে বাইন্ডিংয়ের জন্য।এই উদাহরণটি JavaFX এবং XML ইন্টিগ্রেশন এর একটি সাধারণ বিষয়বস্তু তুলে ধরে, যা আপনার অ্যাপ্লিকেশনে XML ডেটা লোড এবং প্রদর্শন করতে সাহায্য করবে। JavaFX এবং XML ইন্টিগ্রেশন অ্যাপ্লিকেশনগুলি ইউজার ইন্টারফেস এবং ডেটার মধ্যে কার্যকরী সম্পর্ক স্থাপন করে, যা ডায়নামিক এবং রিয়েল-টাইম ডেটা প্রদর্শন করে।
Read more