AWT (Abstract Window Toolkit) ব্যবহার করে Custom Data Transfer এবং Clipboard Operations পরিচালনা করা যায়। AWT ক্লিপবোর্ড এবং ডাটা ট্রান্সফারের জন্য Clipboard, Transferable, ClipboardOwner ইন্টারফেস এবং বিভিন্ন ক্লাস প্রদান করে, যার মাধ্যমে আপনি টেক্সট বা অন্য কাস্টম ডেটা ক্লিপবোর্ডে কপি, পেস্ট এবং কাটা অপারেশন করতে পারেন।
AWT ক্লিপবোর্ড অপারেশন
AWT ক্লিপবোর্ডের মাধ্যমে ডেটা কপি এবং পেস্ট করার জন্য Clipboard এবং Transferable ক্লাস ব্যবহার করা হয়। ক্লিপবোর্ডের অপারেশন যেমন কপি, কাট, পেস্ট এবং ক্লিপবোর্ডের কন্টেন্ট রিট্রিভ করা সহজেই করা যায়।
ক্লিপবোর্ডে ডেটা কপি করা (Copy Data to Clipboard)
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import java.io.*;
public class ClipboardExample extends Frame {
private TextArea textArea;
public ClipboardExample() {
setTitle("Clipboard Operations Example");
setSize(400, 300);
setLayout(new BorderLayout());
// TextArea to enter data
textArea = new TextArea();
add(textArea, BorderLayout.CENTER);
// Button to copy data to clipboard
Button copyButton = new Button("Copy to Clipboard");
copyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text = textArea.getText(); // Get the text from TextArea
// Create a string selection object with the text to be copied
StringSelection stringSelection = new StringSelection(text);
// Get system clipboard
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
// Set the string selection to clipboard
clipboard.setContents(stringSelection, null);
System.out.println("Text copied to clipboard!");
}
});
add(copyButton, BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String[] args) {
new ClipboardExample();
}
}
এখানে কী হচ্ছে:
- একটি
TextAreaতৈরি করা হয়েছে যেখানে ব্যবহারকারী টেক্সট ইনপুট দিতে পারেন। - একটি
Buttonক্লিক করলেStringSelectionব্যবহার করে টেক্সট ক্লিপবোর্ডে কপি করা হচ্ছে। Clipboardক্লাসের মাধ্যমে ক্লিপবোর্ডের কন্টেন্ট সেট করা হচ্ছে।
ক্লিপবোর্ড থেকে ডেটা পেস্ট করা (Paste Data from Clipboard)
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
public class ClipboardPasteExample extends Frame {
private TextArea textArea;
public ClipboardPasteExample() {
setTitle("Clipboard Paste Example");
setSize(400, 300);
setLayout(new BorderLayout());
// TextArea to paste data
textArea = new TextArea();
add(textArea, BorderLayout.CENTER);
// Button to paste data from clipboard
Button pasteButton = new Button("Paste from Clipboard");
pasteButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
// Get system clipboard
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
// Get the content from the clipboard
Transferable content = clipboard.getContents(null);
if (content != null && content.isDataFlavorSupported(DataFlavor.stringFlavor)) {
// If the content is a string, get the string
String text = (String) content.getTransferData(DataFlavor.stringFlavor);
textArea.setText(text); // Paste the text into the TextArea
}
} catch (UnsupportedFlavorException | IOException ex) {
System.out.println("Error reading from clipboard: " + ex.getMessage());
}
}
});
add(pasteButton, BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String[] args) {
new ClipboardPasteExample();
}
}
এখানে কী হচ্ছে:
- একটি
TextAreaতৈরি করা হয়েছে যাতে ক্লিপবোর্ডের টেক্সট পেস্ট করা যাবে। Buttonক্লিক করলে ক্লিপবোর্ড থেকে টেক্সট পেস্ট করা হয়।Transferableইন্টারফেসের মাধ্যমে ক্লিপবোর্ডের কন্টেন্ট পেতে পারি, এবংDataFlavor.stringFlavorব্যবহার করে শুধুমাত্র টেক্সট ডেটা পেস্ট করা হচ্ছে।
কাস্টম ডেটা ট্রান্সফার (Custom Data Transfer)
AWT এর মাধ্যমে আপনি কাস্টম ডেটা ট্রান্সফারও করতে পারেন, যেমন ফাইল, ইমেজ বা কাস্টম অবজেক্ট। কাস্টম ডেটা ট্রান্সফার করতে হলে, আপনাকে Transferable ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।
কাস্টম ডেটা ট্রান্সফার উদাহরণ (Transfer Custom Data)
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import java.io.*;
public class CustomDataTransferExample extends Frame {
private TextArea textArea;
public CustomDataTransferExample() {
setTitle("Custom Data Transfer Example");
setSize(400, 300);
setLayout(new BorderLayout());
// TextArea to input custom data
textArea = new TextArea();
add(textArea, BorderLayout.CENTER);
// Button to transfer custom data
Button transferButton = new Button("Transfer Custom Data");
transferButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String customData = "Custom Data Example"; // Custom data to transfer
// Create a custom Transferable object
CustomTransferable customTransferable = new CustomTransferable(customData);
// Get system clipboard
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
// Set the custom Transferable object to clipboard
clipboard.setContents(customTransferable, null);
System.out.println("Custom Data transferred to clipboard!");
}
});
add(transferButton, BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String[] args) {
new CustomDataTransferExample();
}
// Custom Transferable implementation
class CustomTransferable implements Transferable {
private String data;
public CustomTransferable(String data) {
this.data = data;
}
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[]{DataFlavor.stringFlavor}; // Only support string data
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return flavor.equals(DataFlavor.stringFlavor); // Support only string flavor
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if (isDataFlavorSupported(flavor)) {
return data; // Return the custom data
}
throw new UnsupportedFlavorException(flavor);
}
}
}
এখানে কী হচ্ছে:
- CustomTransferable ক্লাস তৈরি করা হয়েছে যা
Transferableইন্টারফেস ইমপ্লিমেন্ট করে এবং কাস্টম ডেটা ট্রান্সফার করার জন্য ব্যবহৃত হয়। Clipboardএর মাধ্যমে কাস্টম ডেটা ক্লিপবোর্ডে স্থানান্তর করা হয়েছে।- কাস্টম ডেটা হিসেবে একটি সাধারণ স্ট্রিং
Custom Data Exampleট্রান্সফার করা হচ্ছে।
টিপস এবং ট্রিকস:
- Multiple Data Types: যদি একাধিক ডেটা টাইপ (যেমন, টেক্সট, ছবি, বা ফাইল) ক্লিপবোর্ডে স্টোর করতে চান, তবে
DataFlavorকাস্টমাইজ করা যেতে পারে। - ClipboardOwner: আপনি যদি ক্লিপবোর্ডের মালিক হতে চান, তাহলে
ClipboardOwnerইন্টারফেস ইমপ্লিমেন্ট করতে পারেন। এটি আপনাকে ক্লিপবোর্ডের কন্টেন্ট পরিবর্তন হলে নোটিফাই করবে।
এভাবে AWT ব্যবহার করে আপনি কাস্টম ডেটা ট্রান্সফার এবং ক্লিপবোর্ড অপারেশন করতে পারেন।
Read more