JavaFX এ, ChangeListener এবং InvalidationListener দুটি গুরুত্বপূর্ণ ইন্টারফেস যা ডেটা পরিবর্তন এবং অবস্থা পর্যবেক্ষণ করতে ব্যবহৃত হয়। এই দুইটি লিসেনার প্রধানত JavaFX Properties এর সাথে কাজ করে, যা UI উপাদানগুলির ডেটা সংরক্ষণ এবং আপডেটের জন্য ব্যবহৃত হয়।
১. ChangeListener
ChangeListener হল একটি ইন্টারফেস যা কোনো Property এর মান পরিবর্তন হলে তা ট্র্যাক করে। এটি সাধারণত ব্যবহৃত হয় যখন কোনো মানের পরিবর্তন পর্যবেক্ষণ করতে হয় এবং তখন কিছু ক্রিয়া বা পরিবর্তন করতে হয়।
ব্যবহার:
ChangeListener একটি change মেথড প্রদান করে, যা ডেটার পরিবর্তন ঘটলে কল হয়। এটি তিনটি প্যারামিটার নেয়:
observable: যে প্রপার্টি ট্র্যাক করা হচ্ছে।oldValue: পূর্বের মান।newValue: নতুন মান।
উদাহরণ: ChangeListener ব্যবহার
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.control.TextField;
public class ChangeListenerExample extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
Label label = new Label("Text: ");
// ChangeListener অ্যাটাচ করা
textField.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
// যখন টেক্সট পরিবর্তিত হবে
label.setText("Text: " + newValue);
}
});
StackPane root = new StackPane();
root.getChildren().addAll(textField, label);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("ChangeListener Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- এখানে,
TextFieldএরtextPropertyএর উপরChangeListenerঅ্যাটাচ করা হয়েছে। - যখন ব্যবহারকারী
TextFieldএর মধ্যে কিছু টাইপ করবেন, তখনchanged()মেথড কল হবে এবংLabelএর টেক্সট আপডেট হবে।
২. InvalidationListener
InvalidationListener একটি ইন্টারফেস যা কোনো প্রপার্টির অবস্থা পরিবর্তন হলে তা ইনভ্যালিড (অকার্যকর) হলে ট্র্যাক করে। এটি মূলত ব্যবহৃত হয় যখন আপনি একটি প্রপার্টি বা মানের অবস্থা পরিবর্তনের বিষয়টি পর্যবেক্ষণ করতে চান, কিন্তু আপনি পূর্বের মান বা নতুন মানের সাথে কাজ করতে চান না, শুধুমাত্র অবস্থা পরিবর্তন ট্র্যাক করতে চান।
ব্যবহার:
InvalidationListener একটি invalidated মেথড প্রদান করে যা কল হয় যখন প্রপার্টি ইনভ্যালিড হয়। এটি সাধারণত Property অবজেক্টের সাথে ব্যবহার করা হয়।
উদাহরণ: InvalidationListener ব্যবহার
import javafx.application.Application;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import javafx.beans.property.SimpleStringProperty;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class InvalidationListenerExample extends Application {
@Override
public void start(Stage primaryStage) {
SimpleStringProperty property = new SimpleStringProperty("Initial Value");
// InvalidationListener অ্যাটাচ করা
property.addListener(new InvalidationListener() {
@Override
public void invalidated(Observable observable) {
System.out.println("Property has been invalidated: " + property.get());
}
});
// প্রপার্টির মান পরিবর্তন করা
property.set("New Value");
property.set("Another New Value");
StackPane root = new StackPane();
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("InvalidationListener Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- এখানে,
SimpleStringPropertyএর উপরInvalidationListenerঅ্যাটাচ করা হয়েছে। - যখন
propertyএর মান পরিবর্তন হয়, তখনinvalidated()মেথড কল হবে এবং এটি প্রপার্টির বর্তমান মান কনসোলে প্রিন্ট করবে।
ChangeListener এবং InvalidationListener এর মধ্যে পার্থক্য:
| বিষয় | ChangeListener | InvalidationListener |
|---|---|---|
| কাজ | প্রপার্টির মান পরিবর্তন হলে কাজ করে। | প্রপার্টির অবস্থা পরিবর্তন হলে কাজ করে, কিন্তু মানে কোনো পরিবর্তন না হলে। |
| প্যারামিটার | oldValue এবং newValue সহ মানের পরিবর্তন ট্র্যাক করে। | শুধুমাত্র প্রপার্টির অবস্থা পরিবর্তনের উপর নজর রাখে, মানের পরিবর্তন ট্র্যাক করে না। |
| ব্যবহার | যখন আপনি পুরানো এবং নতুন মানের মধ্যে পার্থক্য ট্র্যাক করতে চান। | যখন শুধুমাত্র প্রপার্টির অবস্থা পর্যবেক্ষণ করতে চান এবং মানের সাথে কাজ করতে চান না। |
JavaFX তে ChangeListener এবং InvalidationListener ডেটা পরিবর্তন ট্র্যাক করতে ব্যবহৃত হয়। ChangeListener একে অপরের মধ্যে মানের পরিবর্তন ট্র্যাক করার জন্য ব্যবহৃত হয়, যখন InvalidationListener শুধুমাত্র প্রপার্টির অবস্থা পরিবর্তন পর্যবেক্ষণ করে। এই দুটি ইন্টারফেস JavaFX অ্যাপ্লিকেশনগুলির মধ্যে ডেটা পরিবর্তন ও UI আপডেট করার জন্য খুবই উপকারী।
Read more