JFreeChart-এ MouseListener এবং MouseMotionListener যোগ করার মাধ্যমে আপনি চার্টের সাথে ইন্টারঅ্যাকটিভ ফিচার যোগ করতে পারেন। এর মাধ্যমে আপনি মাউসের ক্লিক, হোভারিং, বা ড্র্যাগ ইভেন্টের প্রতি প্রতিক্রিয়া জানাতে পারবেন, যা ব্যবহারকারীকে চার্টের বিভিন্ন অংশে ইন্টারঅ্যাক্ট করতে সহায়ক হয়। উদাহরণস্বরূপ, MouseListener ব্যবহার করে আপনি চার্টের কোনও নির্দিষ্ট ডেটা পয়েন্টের উপর ক্লিক করার মাধ্যমে তা হাইলাইট করতে পারেন বা MouseMotionListener ব্যবহার করে আপনি মাউসের গতিবিধি অনুসরণ করে কোনো তথ্য প্রদর্শন করতে পারেন।
MouseListener এবং MouseMotionListener এর ধারণা
- MouseListener: মাউসের ক্লিক বা মাউস চাপানোর সময় ঘটে এমন ইভেন্টগুলো ধরার জন্য ব্যবহৃত হয়। যেমন mousePressed, mouseReleased, mouseClicked ইত্যাদি।
- MouseMotionListener: মাউসের গতি এবং অবস্থান (যেমন মাউস মুভমেন্ট এবং ড্র্যাগ) ট্র্যাক করতে ব্যবহৃত হয়। যেমন mouseDragged এবং mouseMoved।
JFreeChart-এ MouseListener এবং MouseMotionListener যোগ করার উদাহরণ
এখানে একটি উদাহরণ দেওয়া হয়েছে যেখানে MouseListener এবং MouseMotionListener ব্যবহার করে JFreeChart-এ ইন্টারঅ্যাকটিভ ফিচার যোগ করা হয়েছে।
১. MouseListener এবং MouseMotionListener ব্যবহার করে ক্লিক এবং মুভমেন্ট ট্র্যাক করা
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 org.jfree.chart.event.MouseEvent;
import org.jfree.chart.event.MouseListener;
import org.jfree.chart.event.MouseMotionListener;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
public class ChartMouseListenerExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Category 1", "January");
dataset.addValue(15, "Category 1", "February");
dataset.addValue(20, "Category 1", "March");
// বার চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Monthly Sales", // Chart Title
"Month", // X-Axis Label
"Sales (Units)", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Bar orientation
true, // Show legend
true, // Show tooltips
false // Show URLs
);
// ChartPanel তৈরি
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// MouseListener যোগ করা
chartPanel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Mouse clicked at: X=" + e.getX() + ", Y=" + e.getY());
}
});
// MouseMotionListener যোগ করা
chartPanel.addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
System.out.println("Mouse moved at: X=" + e.getX() + ", Y=" + e.getY());
}
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("Mouse dragged at: X=" + e.getX() + ", Y=" + e.getY());
}
});
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
কোড ব্যাখ্যা:
- Dataset তৈরি করা: এখানে
DefaultCategoryDatasetব্যবহার করে কিছু ডেটা যোগ করা হয়েছে, যা Bar Chart প্রদর্শন করবে। - MouseListener:
MouseAdapterক্লাসের সাহায্যে mouseClicked ইভেন্টে মাউসের অবস্থান (X এবং Y) প্রিন্ট করা হয়েছে। আপনি যদি মাউসের উপর ক্লিক করেন, তখন চার্টের কন্টেন্টের উপর মাউসের অবস্থান প্রদর্শিত হবে। - MouseMotionListener:
mouseMovedএবংmouseDraggedমেথডগুলি মাউসের গতি এবং ড্র্যাগিং ট্র্যাক করতে ব্যবহৃত হয়েছে। mouseMoved-এ, মাউসের স্থান পরিবর্তন অনুযায়ী কনসোলে মেসেজ প্রিন্ট হচ্ছে, আর mouseDragged-এ মাউস ড্র্যাগ করার সময় এটি ট্র্যাক করে। - ChartPanel:
ChartPanelক্লাসটি JFreeChart এর চার্ট প্রদর্শন করার জন্য ব্যবহৃত হয়। এখানে এটি JFrame তে চার্ট প্রদর্শন করার জন্য সংযুক্ত করা হয়েছে।
MouseListener এবং MouseMotionListener কাস্টমাইজেশন
MouseClicked: মাউস ক্লিকের মাধ্যমে এক বা একাধিক ডেটা পয়েন্ট নির্বাচন বা হাইলাইট করতে পারবেন।
chartPanel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // নির্বাচিত ডেটা পয়েন্ট দেখানো System.out.println("Data point clicked at: X=" + e.getX() + ", Y=" + e.getY()); } });MouseMoved: মাউসের গতি অনুসরণ করে কোন ডেটা পয়েন্টের উপর তথ্য প্রদর্শন করতে পারবেন।
chartPanel.addMouseMotionListener(new MouseAdapter() { @Override public void mouseMoved(MouseEvent e) { // মাউস মুভমেন্টের উপর ভিত্তি করে ডেটা পয়েন্টের টুলটিপ প্রদর্শন করা System.out.println("Mouse moved at: X=" + e.getX() + ", Y=" + e.getY()); } });MouseDragged: মাউসের ড্র্যাগিংয়ের মাধ্যমে কিছু বিশেষ কার্যকলাপ (যেমন ড্র্যাগ করে চার্টে কোনো আংশিক পরিবর্তন) করা যায়।
chartPanel.addMouseMotionListener(new MouseAdapter() { @Override public void mouseDragged(MouseEvent e) { // মাউস ড্র্যাগ করার সময় কিছু পরিবর্তন করুন System.out.println("Mouse dragged at: X=" + e.getX() + ", Y=" + e.getY()); } });
সারসংক্ষেপ
MouseListener এবং MouseMotionListener ব্যবহার করে JFreeChart-এ ইন্টারঅ্যাকটিভ ফিচার যোগ করা সম্ভব। এর মাধ্যমে আপনি মাউসের ক্লিক, মুভমেন্ট, এবং ড্র্যাগ ইভেন্ট ট্র্যাক করতে পারবেন এবং তা থেকে বিভিন্ন কার্যকলাপ বা তথ্য প্রদর্শন করতে পারবেন। এই ধরনের কাস্টমাইজেশন আপনার গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI)-কে আরও ডাইনামিক এবং ব্যবহারকারী বান্ধব করে তোলে।
Read more