Mouse এবং Key Events হ্যান্ডল করা

Interactive Charts এবং Event Handling - জেফ্রিচার্ট (JFreeChart) - Java Technologies

275

JFreeChart একটি শক্তিশালী Java লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশন এবং চার্ট তৈরির জন্য ব্যবহৃত হয়। কখনো কখনো, আপনি চার্টে mouse events (যেমন ক্লিক বা মুভ) এবং key events (যেমন কীবোর্ড ইনপুট) হ্যান্ডল করতে চান। JFreeChart এ Mouse এবং Key events হ্যান্ডল করার মাধ্যমে আপনি চার্টের ইন্টারঅ্যাকটিভিটি এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন।

এই গাইডে আমরা Mouse এবং Key Events কিভাবে হ্যান্ডল করা যায় এবং JFreeChart-এ ব্যবহার করা যায়, তা নিয়ে আলোচনা করব।


1. Mouse Events হ্যান্ডল করা

Mouse Events-এর মাধ্যমে আপনি চার্টের উপর বিভিন্ন ধরনের ইন্টারঅ্যাকশন করতে পারেন, যেমন চার্টে ক্লিক করা, হোভার করা, ড্র্যাগ করা ইত্যাদি। JFreeChart মাউস ইভেন্ট হ্যান্ডল করতে MouseListener এবং MouseMotionListener ইন্টারফেস ব্যবহার করে।

1.1. MouseListener এবং MouseMotionListener ব্যবহার

MouseListener চারটি প্রধান মাউস ইভেন্ট হ্যান্ডল করতে ব্যবহৃত হয়:

  • mousePressed(): মাউস প্রেস করার সময়।
  • mouseReleased(): মাউস রিলিজ করার সময়।
  • mouseClicked(): মাউস ক্লিক করার সময়।
  • mouseEntered(): মাউস চার্টে প্রবেশ করার সময়।
  • mouseExited(): মাউস চার্ট থেকে বের হওয়ার সময়।

MouseMotionListener হ্যান্ডল করতে ব্যবহৃত হয়:

  • mouseMoved(): মাউস মুভ করার সময়।
  • mouseDragged(): মাউস ড্র্যাগ করার সময়।

উদাহরণ: Mouse Events হ্যান্ডল করা

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;

public class MouseEventExample {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(5, "Category1", "Jan");
        dataset.addValue(3, "Category1", "Feb");
        dataset.addValue(4, "Category1", "Mar");

        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Example", // Chart Title
                "Month",             // X-Axis Label
                "Value",             // Y-Axis Label
                dataset,             // Dataset
                PlotOrientation.VERTICAL, // Plot Orientation
                true,                // Legend
                true,                // Tooltips
                false                // URLs
        );

        // MouseListener যোগ করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                // মাউস ক্লিক করা হলে কাজ করবে
                System.out.println("Mouse clicked at: " + e.getPoint());
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                // মাউস চার্টে প্রবেশ করলে কাজ করবে
                System.out.println("Mouse entered chart area.");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                // মাউস চার্ট থেকে বের হলে কাজ করবে
                System.out.println("Mouse exited chart area.");
            }
        });

        // Chart Panel তৈরি করে এবং রিটার্ন করা
        return chartPanel;
    }

    public static void main(String[] args) {
        // JFrame তৈরি করা
        JFrame frame = new JFrame("Mouse Event Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createChartPanel());
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • MouseAdapter ক্লাস ব্যবহার করে বিভিন্ন মাউস ইভেন্ট হ্যান্ডল করা হয়েছে। যেমন, mouseClicked() ব্যবহার করে মাউস ক্লিক করার সময় পয়েন্ট আউটপুট দেখানো হয়েছে।
  • mouseEntered() এবং mouseExited() ইভেন্টের মাধ্যমে মাউস চার্টের মধ্যে প্রবেশ বা বের হওয়ার সময় বার্তা প্রদর্শন করা হয়েছে।

2. Key Events হ্যান্ডল করা

Key Events ব্যবহারকারীর কীবোর্ড ইনপুট হ্যান্ডল করতে ব্যবহৃত হয়। JFreeChart এ KeyListener ইন্টারফেসের মাধ্যমে আপনি কীবোর্ড ইভেন্ট হ্যান্ডল করতে পারেন।

2.1. KeyListener ব্যবহার

KeyListener-এর মাধ্যমে আপনি keyPressed(), keyReleased(), এবং keyTyped() ইভেন্টগুলো হ্যান্ডল করতে পারেন।

  • keyPressed(): কী চাপা হলে।
  • keyReleased(): কী ছেড়ে দিলে।
  • keyTyped(): কী টাইপ করার সময়।

উদাহরণ: Key Events হ্যান্ডল করা

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.*;

public class KeyEventExample {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(5, "Category1", "Jan");
        dataset.addValue(3, "Category1", "Feb");
        dataset.addValue(4, "Category1", "Mar");

        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Example", // Chart Title
                "Month",             // X-Axis Label
                "Value",             // Y-Axis Label
                dataset,             // Dataset
                PlotOrientation.VERTICAL, // Plot Orientation
                true,                // Legend
                true,                // Tooltips
                false                // URLs
        );

        // KeyListener যোগ করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                // Key pressed event
                System.out.println("Key pressed: " + e.getKeyChar());
            }

            @Override
            public void keyReleased(KeyEvent e) {
                // Key released event
                System.out.println("Key released: " + e.getKeyChar());
            }
        });

        // Focusable set করা যাতে Key Events কাজ করে
        chartPanel.setFocusable(true);

        // Chart Panel তৈরি করে এবং রিটার্ন করা
        return chartPanel;
    }

    public static void main(String[] args) {
        // JFrame তৈরি করা
        JFrame frame = new JFrame("Key Event Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createChartPanel());
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • KeyAdapter ক্লাস ব্যবহার করে keyPressed() এবং keyReleased() ইভেন্ট হ্যান্ডল করা হয়েছে। যখন কীবোর্ডে একটি কী চাপা বা ছেড়ে দেওয়া হয়, তখন এটি কনসোলে কিপ্রেসড এবং কীয়রিলিজড বার্তা প্রদর্শন করবে।
  • setFocusable(true) ব্যবহার করা হয়েছে যাতে KeyListener কাজ করে, কারণ KeyListener শুধুমাত্র সেই কম্পোনেন্টে কাজ করে যা focusable

3. Mouse এবং Key Events একসাথে হ্যান্ডল করা

JFreeChart এর মধ্যে আপনি মাউস এবং কীবোর্ড ইভেন্ট একসাথে হ্যান্ডল করতে পারেন। এটি ব্যবহারকারীর সাথে ইন্টারঅ্যাকশনের উন্নত অভিজ্ঞতা তৈরি করতে সহায়তা করে। নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে একসাথে মাউস এবং কীবোর্ড ইভেন্ট হ্যান্ডল করা হয়েছে।

উদাহরণ:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;

public class CombinedEventExample {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(5, "Category1", "Jan");
        dataset.addValue(3, "Category1", "Feb");
        dataset.addValue(4, "Category1", "Mar");

        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Example", // Chart Title
                "Month",             // X-Axis Label
                "Value",             // Y-Axis Label
                dataset,             // Dataset
                PlotOrientation.VERTICAL, // Plot Orientation
                true,                // Legend
                true,                // Tooltips
                false                // URLs
        );

        // ChartPanel তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        
        // MouseListener যোগ করা
        chartPanel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("Mouse clicked at: " + e.getPoint());
            }
        });

        // KeyListener যোগ করা
        chartPanel.addKeyListener(new KeyAdapter
Content added By
Promotion

Are you sure to start over?

Loading...