ChangeListener এবং InvalidationListener এর ব্যবহার

JavaFX Properties এবং Bindings - জাভাএফএক্স (JavaFx) - Java Technologies

322

JavaFX এ, ChangeListener এবং InvalidationListener দুটি গুরুত্বপূর্ণ ইন্টারফেস যা ডেটা পরিবর্তন এবং অবস্থা পর্যবেক্ষণ করতে ব্যবহৃত হয়। এই দুইটি লিসেনার প্রধানত JavaFX Properties এর সাথে কাজ করে, যা UI উপাদানগুলির ডেটা সংরক্ষণ এবং আপডেটের জন্য ব্যবহৃত হয়।

১. ChangeListener

ChangeListener হল একটি ইন্টারফেস যা কোনো Property এর মান পরিবর্তন হলে তা ট্র্যাক করে। এটি সাধারণত ব্যবহৃত হয় যখন কোনো মানের পরিবর্তন পর্যবেক্ষণ করতে হয় এবং তখন কিছু ক্রিয়া বা পরিবর্তন করতে হয়।

ব্যবহার:

ChangeListener একটি change মেথড প্রদান করে, যা ডেটার পরিবর্তন ঘটলে কল হয়। এটি তিনটি প্যারামিটার নেয়:

  1. observable: যে প্রপার্টি ট্র্যাক করা হচ্ছে।
  2. oldValue: পূর্বের মান।
  3. 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 এর মধ্যে পার্থক্য:

বিষয়ChangeListenerInvalidationListener
কাজপ্রপার্টির মান পরিবর্তন হলে কাজ করে।প্রপার্টির অবস্থা পরিবর্তন হলে কাজ করে, কিন্তু মানে কোনো পরিবর্তন না হলে।
প্যারামিটারoldValue এবং newValue সহ মানের পরিবর্তন ট্র্যাক করে।শুধুমাত্র প্রপার্টির অবস্থা পরিবর্তনের উপর নজর রাখে, মানের পরিবর্তন ট্র্যাক করে না।
ব্যবহারযখন আপনি পুরানো এবং নতুন মানের মধ্যে পার্থক্য ট্র্যাক করতে চান।যখন শুধুমাত্র প্রপার্টির অবস্থা পর্যবেক্ষণ করতে চান এবং মানের সাথে কাজ করতে চান না।

JavaFX তে ChangeListener এবং InvalidationListener ডেটা পরিবর্তন ট্র্যাক করতে ব্যবহৃত হয়। ChangeListener একে অপরের মধ্যে মানের পরিবর্তন ট্র্যাক করার জন্য ব্যবহৃত হয়, যখন InvalidationListener শুধুমাত্র প্রপার্টির অবস্থা পরিবর্তন পর্যবেক্ষণ করে। এই দুটি ইন্টারফেস JavaFX অ্যাপ্লিকেশনগুলির মধ্যে ডেটা পরিবর্তন ও UI আপডেট করার জন্য খুবই উপকারী।

Content added By
Promotion

Are you sure to start over?

Loading...