Drag-and-Drop Operation এর জন্য DataFlavor এবং TransferHandler

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

246

AWT (Abstract Window Toolkit)-এ Drag-and-Drop অপারেশন প্রক্রিয়া ব্যবহার করতে হলে, আপনাকে DataFlavor এবং TransferHandler ক্লাসের সাহায্য নিতে হবে। Drag-and-Drop এক ধরনের ইউজার ইন্টারঅ্যাকশন, যেখানে একটি কম্পোনেন্ট থেকে অন্য কম্পোনেন্টে ডেটা "ড্র্যাগ" এবং "ড্রপ" করা হয়। এটির জন্য DataFlavor এবং TransferHandler ব্যবহৃত হয় ডেটার ফরম্যাট সংজ্ঞায়িত করতে এবং ডেটা স্থানান্তরের জন্য।

১. DataFlavor:

DataFlavor ক্লাস ডেটার ধরন (ফরম্যাট) নির্ধারণ করতে ব্যবহৃত হয়, যা ড্র্যাগ-এন্ড-ড্রপ অপারেশনে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এর মাধ্যমে আপনি নির্দিষ্ট ডেটা ফরম্যাট চিহ্নিত করতে পারেন, যেমন String, Image, অথবা Text ইত্যাদি।

২. TransferHandler:

TransferHandler ক্লাস ড্র্যাগ এবং ড্রপ অ্যাকশন পরিচালনা করে। এটি ডেটার উৎস এবং গন্তব্য (source and target) সংযুক্ত করে এবং ডেটা স্থানান্তরের জন্য বিভিন্ন মেথড সরবরাহ করে।

উদাহরণ: Drag-and-Drop ব্যবহার করে Text Transfer করা

এখানে একটি উদাহরণ দেওয়া হলো, যেখানে একটি TextArea থেকে টেক্সট ড্র্যাগ করা হয় এবং অন্য একটি TextArea-তে ড্রপ করা হয়:

import java.awt.*;
import javax.swing.*;
import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.io.*;

public class DragAndDropExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Drag and Drop Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);

        // দুইটি TextArea তৈরি
        JTextArea sourceArea = new JTextArea("Drag this text!", 10, 20);
        JTextArea targetArea = new JTextArea("Drop the text here.", 10, 20);

        // Source text area (dragging)
        sourceArea.setDragEnabled(true);  // এই টেক্সট অ্যারেটি ড্র্যাগ করার জন্য প্রস্তুত
        sourceArea.setTransferHandler(new TransferHandler("text"));  // ডেটা হ্যান্ডলিং সেট করা

        // Target text area (dropping)
        targetArea.setDropMode(DropMode.INSERT);
        targetArea.setTransferHandler(new TransferHandler("text") {
            // Override to handle drop event
            public boolean canImport(TransferHandler.TransferSupport support) {
                return support.isDataFlavorSupported(DataFlavor.stringFlavor);
            }

            public boolean importData(TransferHandler.TransferSupport support) {
                if (!canImport(support)) {
                    return false;
                }
                try {
                    // Dropped data import
                    String data = (String) support.getTransferable().getTransferData(DataFlavor.stringFlavor);
                    targetArea.append(data);
                    return true;
                } catch (Exception e) {
                    e.printStackTrace();
                    return false;
                }
            }
        });

        // JScrollPane এবং TextAreas যোগ করা
        JScrollPane sourceScroll = new JScrollPane(sourceArea);
        JScrollPane targetScroll = new JScrollPane(targetArea);
        
        // Frame-এ কম্পোনেন্ট যোগ করা
        frame.setLayout(new GridLayout(2, 1));
        frame.add(sourceScroll);
        frame.add(targetScroll);

        // Frame দৃশ্যমান করা
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  1. TextArea তৈরি: দুটি JTextArea তৈরি করা হয়েছে—একটি ড্র্যাগ করার জন্য (sourceArea) এবং অন্যটি ড্রপ করার জন্য (targetArea)।
  2. ড্র্যাগ সক্ষম করা:
    • sourceArea.setDragEnabled(true); - sourceArea-তে ড্র্যাগ ফিচার সক্ষম করা হয়েছে।
    • sourceArea.setTransferHandler(new TransferHandler("text")); - TransferHandler ব্যবহার করে text ডেটা টাইপের ড্র্যাগ করতে বলা হয়েছে।
  3. ড্রপ সক্ষম করা:
    • targetArea.setDropMode(DropMode.INSERT); - targetArea-তে ড্রপ করার জন্য মোড নির্ধারণ করা হয়েছে।
    • targetArea.setTransferHandler(new TransferHandler("text") {...}) - TransferHandler-এ text ডেটা টাইপের জন্য কাস্টম importData এবং canImport মেথড ব্যবহার করে ড্রপ অপারেশন কাস্টমাইজ করা হয়েছে।
  4. DataFlavor: DataFlavor.stringFlavor ব্যবহার করে আমরা নিশ্চিত করি যে ড্রপ অপারেশনে শুধুমাত্র টেক্সট ডেটা ড্রপ করা হবে।

আউটপুট:

  • প্রথম TextArea-তে কিছু টেক্সট থাকবে, যা আপনি ড্র্যাগ করে দ্বিতীয় TextArea-তে ড্রপ করতে পারবেন।
  • দ্বিতীয় TextArea-তে ড্রপ করার পর প্রথম TextArea-এর টেক্সট চলে আসবে।

আরও কাস্টমাইজেশন:

  • আপনি DataFlavor ব্যবহার করে ইমেজ, ফাইল বা অন্যান্য ডেটা ফরম্যাটের জন্য কাস্টম ফিল্টার করতে পারেন।
  • বিভিন্ন ড্র্যাগ এবং ড্রপ ইভেন্টগুলির জন্য কাস্টম TransferHandler তৈরি করতে পারেন।

এভাবে Drag-and-Drop অপারেশনটি কাস্টম ফাইল, টেক্সট বা অন্যান্য ডেটা স্থানান্তরের জন্য তৈরি করা যেতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...