JavaFX-এ TableView এবং ListView দুটি গুরুত্বপূর্ণ UI উপাদান যা ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়। Data Binding এর মাধ্যমে, আপনি TableView বা ListView-এর মধ্যে ডেটা যুক্ত করতে পারেন, যাতে ডেটার পরিবর্তন স্বয়ংক্রিয়ভাবে UI-তে আপডেট হয়। এটি আপনার অ্যাপ্লিকেশনকে আরও রেসপন্সিভ এবং ডায়নামিক করে তোলে।
১. TableView এবং Data Binding:
TableView একটি টেবিল আকারের UI উপাদান যা সাধারণত তালিকা আকারে ডেটা প্রদর্শন করতে ব্যবহৃত হয়। TableView-এর মাধ্যমে আপনি ডেটাকে কলাম আকারে প্রদর্শন করতে পারেন, এবং Property Binding ব্যবহার করে আপনি ডেটার পরিবর্তন ট্র্যাক করতে পারেন।
উদাহরণ: TableView ব্যবহার করে Data Binding
ধরা যাক, আমাদের কাছে একটি Person ক্লাস রয়েছে যার মধ্যে নাম, বয়স এবং শহরের ডেটা আছে। আমরা এই ডেটাগুলিকে TableView তে প্রদর্শন করতে চাই।
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.property.IntegerProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class TableViewExample extends Application {
public static class Person {
private final StringProperty name;
private final IntegerProperty age;
private final StringProperty city;
public Person(String name, int age, String city) {
this.name = new SimpleStringProperty(name);
this.age = new SimpleIntegerProperty(age);
this.city = new SimpleStringProperty(city);
}
public StringProperty nameProperty() {
return name;
}
public IntegerProperty ageProperty() {
return age;
}
public StringProperty cityProperty() {
return city;
}
public String getName() {
return name.get();
}
public void setName(String name) {
this.name.set(name);
}
public int getAge() {
return age.get();
}
public void setAge(int age) {
this.age.set(age);
}
public String getCity() {
return city.get();
}
public void setCity(String city) {
this.city.set(city);
}
}
@Override
public void start(Stage primaryStage) {
// TableView তৈরি করা
TableView<Person> tableView = new TableView<>();
// নামের জন্য কলাম তৈরি করা
TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
// বয়সের জন্য কলাম তৈরি করা
TableColumn<Person, Integer> ageColumn = new TableColumn<>("Age");
ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty().asObject());
// শহরের জন্য কলাম তৈরি করা
TableColumn<Person, String> cityColumn = new TableColumn<>("City");
cityColumn.setCellValueFactory(cellData -> cellData.getValue().cityProperty());
// TableView-এ কলামগুলো যোগ করা
tableView.getColumns().add(nameColumn);
tableView.getColumns().add(ageColumn);
tableView.getColumns().add(cityColumn);
// ObservableList তৈরি করা
ObservableList<Person> data = FXCollections.observableArrayList(
new Person("John", 25, "New York"),
new Person("Jane", 30, "Los Angeles"),
new Person("Mike", 28, "Chicago")
);
// TableView-এ ডেটা সেট করা
tableView.setItems(data);
// VBox-এ TableView রাখা
VBox vbox = new VBox(tableView);
Scene scene = new Scene(vbox);
primaryStage.setScene(scene);
primaryStage.setTitle("TableView Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- Person ক্লাস:
name,age, এবংcityপ্রপার্টি ধারণ করে, এবং প্রত্যেকটি প্রপার্টিSimpleStringPropertyবাSimpleIntegerPropertyদিয়ে ডেক্লেয়ার করা হয়েছে। - TableView:
TableViewতৈরি করা হয়েছে এবং তিনটি কলাম (name,age,city) যোগ করা হয়েছে। প্রতিটি কলামের জন্যsetCellValueFactoryব্যবহার করা হয়েছে যাতে প্রপার্টি থেকে ডেটা নেওয়া যায়। - ObservableList:
ObservableListব্যবহার করা হয়েছে যাতে ডেটা পরিবর্তন হলেTableViewস্বয়ংক্রিয়ভাবে আপডেট হয়।
২. ListView এবং Data Binding:
ListView হল একটি লিনিয়ার তালিকা উপাদান যা সাধারণত একক ডেটা আইটেম বা তালিকা প্রদর্শন করতে ব্যবহৃত হয়। এটি JavaFX-এর একটি মৌলিক অংশ এবং এটি ObservableList এর মাধ্যমে ডেটা ব্যন্ড করতে সহায়তা করে।
উদাহরণ: ListView ব্যবহার করে Data Binding
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class ListViewExample extends Application {
@Override
public void start(Stage primaryStage) {
// ListView তৈরি করা
ListView<String> listView = new ListView<>();
// ObservableList তৈরি করা
ObservableList<String> data = FXCollections.observableArrayList(
"Apple", "Banana", "Cherry", "Date", "Elderberry");
// ListView-এ ডেটা সেট করা
listView.setItems(data);
// VBox-এ ListView রাখা
VBox vbox = new VBox(listView);
Scene scene = new Scene(vbox, 300, 250);
primaryStage.setTitle("ListView Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- ListView: এটি একটি সাধারণ তালিকা যা আইটেমগুলি দেখাবে। এখানে
ObservableList<String>তৈরি করা হয়েছে এবং সেটিListView-এ যোগ করা হয়েছে। - ObservableList:
ObservableListব্যবহার করা হয়েছে, যাতে তালিকার ডেটা পরিবর্তিত হলে তা UI তে স্বয়ংক্রিয়ভাবে প্রতিফলিত হয়।
Data Binding Benefits in TableView and ListView:
- Real-time Updates: যখন ডেটা পরিবর্তিত হয়, তা সরাসরি UI তে প্রতিফলিত হয়, কারণ ObservableList এবং Properties যুক্ত করার মাধ্যমে ডেটার পরিবর্তন ট্র্যাক করা হয়।
- Minimal Code: JavaFX-এর Property Binding ব্যবহার করে আপনি UI এবং ডেটা ম্যানিপুলেশনের জন্য কম কোড লিখতে পারেন।
- Reactivity: TableView বা ListView-এ ডেটা পরিবর্তন হলে UI স্বয়ংক্রিয়ভাবে আপডেট হয়, এটি অ্যাপ্লিকেশনকে আরও রেসপন্সিভ এবং ডায়নামিক করে তোলে।
- Ease of Maintenance: UI এবং ডেটা লজিক আলাদা রাখতে সাহায্য করে, ফলে কোডের পরিচালনা এবং মেইনটেনেন্স সহজ হয়।
JavaFX-এ TableView এবং ListView উভয়েই Data Binding-এর মাধ্যমে ডেটা পরিচালনা করতে সাহায্য করে। ObservableList এবং Properties ব্যবহার করে আপনি ডেটার পরিবর্তন স্বয়ংক্রিয়ভাবে UI-তে দেখতে পাবেন। এটি আপনাকে আরো পরিষ্কার, রিয়েক্টিভ এবং ডায়নামিক অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।
Read more