JavaFX Data Transfer এবং Clipboard Management হল JavaFX অ্যাপ্লিকেশনগুলিতে তথ্য স্থানান্তর এবং কপি-পেস্ট কার্যকারিতা পরিচালনার জন্য ব্যবহৃত কিছু গুরুত্বপূর্ণ ফিচার। JavaFX এর Clipboard API আপনাকে ইউজারের কিপ্যাড (কপি, কেট, পেস্ট) কার্যকারিতা এবং তথ্য স্থানান্তরের জন্য সমর্থন প্রদান করে।
Clipboard Management in JavaFX
JavaFX তে Clipboard একটি ইনস্ট্যান্স যা ক্লিপবোর্ডে ডাটা রাখতে এবং সেই ডাটা ক্লিপবোর্ড থেকে পড়তে সহায়তা করে। এই API আপনাকে টেক্সট, ইমেজ, ফাইল এবং অন্যান্য ডাটা টাইপ ক্লিপবোর্ডে সংরক্ষণ করতে এবং পরে সেই ডাটা রিটার্ন করতে দেয়।
1. Clipboard API
JavaFX-এ ক্লিপবোর্ডে তথ্য স্থানান্তর করতে Clipboard এবং ClipboardContent ক্লাস ব্যবহৃত হয়। ClipboardContent ক্লাসটি বিভিন্ন ধরনের কনটেন্ট (যেমন টেক্সট, ইমেজ) ধারণ করতে সক্ষম, যা পরে Clipboard-এ পেস্ট করা হয়।
Clipboard Management উদাহরণ:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
public class ClipboardExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি টেক্সটফিল্ড তৈরি করা
TextField textField = new TextField("Copy me to Clipboard");
// একটি বাটন তৈরি করা
Button btnCopy = new Button("Copy to Clipboard");
// কপি করার জন্য বাটনে ইভেন্ট হ্যান্ডলার যোগ করা
btnCopy.setOnAction(e -> {
// ক্লিপবোর্ডে টেক্সট কপি করা
Clipboard clipboard = Clipboard.getSystemClipboard();
ClipboardContent content = new ClipboardContent();
content.putString(textField.getText()); // টেক্সটফিল্ডের মান ক্লিপবোর্ডে যোগ করা
clipboard.setContent(content);
});
// একটি বাটন তৈরি করা পেস্ট করার জন্য
Button btnPaste = new Button("Paste from Clipboard");
// পেস্ট করার জন্য বাটনে ইভেন্ট হ্যান্ডলার যোগ করা
btnPaste.setOnAction(e -> {
// ক্লিপবোর্ড থেকে টেক্সট পড়া
Clipboard clipboard = Clipboard.getSystemClipboard();
if (clipboard.hasString()) {
String text = clipboard.getString();
textField.setText(text); // টেক্সটফিল্ডে ক্লিপবোর্ডের মান পেস্ট করা
}
});
// StackPane লেআউট তৈরি করা
StackPane root = new StackPane();
root.getChildren().addAll(textField, btnCopy, btnPaste);
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Clipboard Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
- Clipboard:
Clipboard.getSystemClipboard()এই লাইনে সিস্টেমের ক্লিপবোর্ড অবজেক্টটি গ্রহণ করা হচ্ছে। - ClipboardContent: এখানে
ClipboardContentব্যবহার করে ক্লিপবোর্ডে যে ডাটা রাখতে হবে তা সংরক্ষণ করা হচ্ছে, যেমন টেক্সট বা অন্য কোনো ডাটা। - Clipboard Methods:
putString()মেথডে টেক্সট ক্লিপবোর্ডে সংরক্ষণ করা হচ্ছে এবংgetString()মেথডের মাধ্যমে ক্লিপবোর্ড থেকে ডাটা পড়া হচ্ছে।
2. Data Transfer in JavaFX
JavaFX-এ Data Transfer সাধারণত একাধিক কনটেক্সটে ব্যবহৃত হয়, যেমন ফাইল ড্র্যাগ-অ্যান্ড-ড্রপ, কপি-পেস্ট অপারেশন ইত্যাদি। DragEvent এবং Clipboard এর সাহায্যে JavaFX ডাটা ট্রান্সফার পরিচালনা করা হয়।
Drag and Drop Example:
JavaFX তে ড্র্যাগ এবং ড্রপের মাধ্যমে ডাটা স্থানান্তর করা যেতে পারে। এটি সাধারণত ফাইল অথবা টেক্সট ড্র্যাগ এবং ড্রপ করার জন্য ব্যবহৃত হয়।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.input.TransferMode;
import javafx.scene.input.DragEvent;
import javafx.scene.input.Dragboard;
public class DragAndDropExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি লেবেল তৈরি করা
Label label = new Label("Drag a file here");
// ড্র্যাগ-এন্ড-ড্রপ ইভেন্ট হ্যান্ডলিং
label.setOnDragOver((DragEvent event) -> {
if (event.getGestureSource() != label && event.getDragboard().hasFiles()) {
event.acceptTransferModes(TransferMode.COPY);
}
event.consume();
});
label.setOnDragDropped((DragEvent event) -> {
Dragboard db = event.getDragboard();
boolean success = false;
if (db.hasFiles()) {
success = true;
label.setText("File dropped: " + db.getFiles());
}
event.setDropCompleted(success);
event.consume();
});
// StackPane লেআউট তৈরি করা
StackPane root = new StackPane();
root.getChildren().add(label);
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Drag and Drop Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এখানে কী হচ্ছে?
setOnDragOverমেথডে ড্র্যাগিং অবস্থায়TransferMode.COPYচয়ন করা হয়, যা নির্দেশ করে যে ফাইল কপি হবে।setOnDragDroppedমেথডে ড্রপ করা ফাইলটি ক্লিপবোর্ডে সংরক্ষিত হচ্ছে।
Clipboard এবং Data Transfer এর সুবিধা
- UI Interactivity: ক্লিপবোর্ড ব্যবস্থাপনা এবং ড্র্যাগ-এন্ড-ড্রপ ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনটিকে আরও ইন্টারঅ্যাকটিভ এবং ব্যবহারকারী বান্ধব করতে পারেন।
- Data Sharing: ক্লিপবোর্ড ব্যবস্থাপনা ডাটা শেয়ারিংয়ের একটি সহজ উপায় হিসেবে কাজ করে। যেমন টেক্সট কপি/পেস্ট বা ফাইল ড্র্যাগ-এন্ড-ড্রপ।
- Platform Independence: JavaFX ক্লিপবোর্ড সিস্টেমের সাথে ইন্টিগ্রেটেড, যা প্ল্যাটফর্ম ইনডিপেনডেন্ট (Windows, Linux, macOS) কাজ করে।
সারাংশ:
JavaFX এ Clipboard Management এবং Data Transfer এক্সটেনসিভ ফিচার প্রদান করে, যা ইউজারদের কপি, কেট, পেস্ট বা ড্র্যাগ-এন্ড-ড্রপের মাধ্যমে ডাটা স্থানান্তর করতে সহায়তা করে। Clipboard API-র মাধ্যমে আপনি টেক্সট, ইমেজ, ফাইল এবং অন্যান্য কনটেন্ট ক্লিপবোর্ডে সেভ এবং রিট্রিভ করতে পারেন, এবং Drag and Drop এর মাধ্যমে ইউজারদেরকে আরও ইন্টারঅ্যাকটিভ অভিজ্ঞতা প্রদান করতে পারেন।
Read more