Custom Data Transfer এবং Clipboard Operations

Clipboard এবং Drag-and-Drop ব্যবস্থাপনা - এডাব্লিউটি (AWT) - Java Technologies

259

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();
    }
}

এখানে কী হচ্ছে:

  1. একটি TextArea তৈরি করা হয়েছে যেখানে ব্যবহারকারী টেক্সট ইনপুট দিতে পারেন।
  2. একটি Button ক্লিক করলে StringSelection ব্যবহার করে টেক্সট ক্লিপবোর্ডে কপি করা হচ্ছে।
  3. 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();
    }
}

এখানে কী হচ্ছে:

  1. একটি TextArea তৈরি করা হয়েছে যাতে ক্লিপবোর্ডের টেক্সট পেস্ট করা যাবে।
  2. Button ক্লিক করলে ক্লিপবোর্ড থেকে টেক্সট পেস্ট করা হয়।
  3. 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);
        }
    }
}

এখানে কী হচ্ছে:

  1. CustomTransferable ক্লাস তৈরি করা হয়েছে যা Transferable ইন্টারফেস ইমপ্লিমেন্ট করে এবং কাস্টম ডেটা ট্রান্সফার করার জন্য ব্যবহৃত হয়।
  2. Clipboard এর মাধ্যমে কাস্টম ডেটা ক্লিপবোর্ডে স্থানান্তর করা হয়েছে।
  3. কাস্টম ডেটা হিসেবে একটি সাধারণ স্ট্রিং Custom Data Example ট্রান্সফার করা হচ্ছে।

টিপস এবং ট্রিকস:

  1. Multiple Data Types: যদি একাধিক ডেটা টাইপ (যেমন, টেক্সট, ছবি, বা ফাইল) ক্লিপবোর্ডে স্টোর করতে চান, তবে DataFlavor কাস্টমাইজ করা যেতে পারে।
  2. ClipboardOwner: আপনি যদি ক্লিপবোর্ডের মালিক হতে চান, তাহলে ClipboardOwner ইন্টারফেস ইমপ্লিমেন্ট করতে পারেন। এটি আপনাকে ক্লিপবোর্ডের কন্টেন্ট পরিবর্তন হলে নোটিফাই করবে।

এভাবে AWT ব্যবহার করে আপনি কাস্টম ডেটা ট্রান্সফার এবং ক্লিপবোর্ড অপারেশন করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...