JFreeChart ব্যবহার করে আপনি গ্রাফ বা চার্টে Mouse Events এবং Click Actions যোগ করতে পারেন। এটি ব্যবহারকারীদের চার্টের মধ্যে ইন্টারঅ্যাকশন করার সুযোগ দেয়, যেমন একটি পয়েন্টে ক্লিক করলে বিস্তারিত তথ্য দেখানো, পয়েন্টের উপর হোভার করলে টুলটিপ দেখানো, বা মাউসের মাধ্যমে গ্রাফে প্যানিং ও জুমিং করা।
Mouse Events এবং Click Actions সাধারণত MouseListener, MouseMotionListener, এবং ChartPanel ব্যবহার করে যোগ করা হয়।
১. Mouse Click Actions এবং Events যোগ করা
JFreeChart এ মাউস ক্লিক বা হোভার ইভেন্টগুলি ট্র্যাক করতে MouseListener ব্যবহার করা হয়। আপনি এটি ব্যবহার করে চার্টের নির্দিষ্ট অংশে ক্লিক করার পর কী কাজ হবে তা নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, একটি ক্লিক করলে নির্দিষ্ট ডেটা পয়েন্টের মান বা একটি নির্দিষ্ট ডেটা ভিউ প্রদর্শন করা।
উদাহরণ: Mouse Click Action
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.plot.PlotOrientation;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class MouseClickExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Series1", "Jan");
dataset.addValue(20, "Series1", "Feb");
dataset.addValue(30, "Series1", "Mar");
// বার চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Sales for the First Quarter", // চার্টের শিরোনাম
"Month", // এক্স-অক্ষের নাম
"Sales", // ওয়াই-অক্ষের নাম
dataset, // ডেটাসেট
PlotOrientation.VERTICAL, // প্লট অরিয়েন্টেশন
true, // লেজেন্ড প্রদর্শন
true, // টুলটিপস
false // URL সমর্থন
);
// MouseAdapter দিয়ে Mouse Click Action যোগ করা
chart.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// ক্লিক ইভেন্ট ট্র্যাক করা
int x = e.getX();
int y = e.getY();
System.out.println("Mouse Clicked at coordinates: (" + x + ", " + y + ")");
// এখানে আপনার ক্লিক করার পর প্রয়োজনীয় Action যুক্ত করতে পারেন
JOptionPane.showMessageDialog(null, "You clicked on the chart at coordinates (" + x + ", " + y + ")");
}
});
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- MouseAdapter ব্যবহার করে মাউসের ক্লিক ট্র্যাক করা হয়েছে।
- মাউস ক্লিকের পর JOptionPane ব্যবহার করে একটি ডায়ালগ বক্সে ক্লিক করা পয়েন্টের স্থান (X, Y) প্রদর্শন করা হয়েছে।
২. Mouse Hover এবং Tooltip Action
Mouse Hover ইভেন্টে আপনি চার্টের পয়েন্টে মাউস হোভার করলে সেই পয়েন্টের টুলটিপ বা তথ্য প্রদর্শন করতে পারেন। ChartPanel ব্যবহার করে আপনি মাউস হোভার ইভেন্ট ট্র্যাক করতে পারেন এবং Tooltips ব্যবহার করে বিস্তারিত তথ্য প্রদর্শন করতে পারেন।
উদাহরণ: Mouse Hover এবং Tooltip Action
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class MouseHoverExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Series1", "Jan");
dataset.addValue(20, "Series1", "Feb");
dataset.addValue(30, "Series1", "Mar");
// বার চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Sales for the First Quarter", // চার্টের শিরোনাম
"Month", // এক্স-অক্ষের নাম
"Sales", // ওয়াই-অক্ষের নাম
dataset, // ডেটাসেট
org.jfree.chart.plot.PlotOrientation.VERTICAL, // প্লট অরিয়েন্টেশন
true, // লেজেন্ড প্রদর্শন
true, // টুলটিপস
false // URL সমর্থন
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// MouseListener দিয়ে Mouse Hover Action যোগ করা
chartPanel.addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
// মাউস মুভের সময় পয়েন্টের সাথে সম্পর্কিত তথ্য দেখানো
int x = e.getX();
int y = e.getY();
System.out.println("Mouse Moved to: (" + x + ", " + y + ")");
// আপনি এখানে মাউস হোভার করার সময় টুলটিপ বা তথ্য দেখাতে পারেন
}
});
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- MouseMotionListener ব্যবহার করে মাউস মুভমেন্ট ট্র্যাক করা হয়েছে।
- এখানে MouseMoved ইভেন্টে ক্লিক না করে, শুধুমাত্র মাউসটি মুভ করা হলে পয়েন্টের উপর টুলটিপ বা তথ্য দেখানো হবে।
৩. Zooming এবং Panning
Zooming এবং Panning একটি সাধারণ ইন্টারঅ্যাকটিভ ফিচার যেখানে ব্যবহারকারী চার্টের মধ্যে প্যান এবং জুম করতে পারেন। এটি ডেটার বিশদ বিশ্লেষণ করতে সহায়ক হয়। JFreeChart এ আপনি XYPlot এ Zooming এবং Panning ফিচার যোগ করতে পারেন।
উদাহরণ: Zooming এবং Panning
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
public class ZoomingPanningExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("Data Points");
series.add(1.0, 5.0);
series.add(2.0, 7.0);
series.add(3.0, 9.0);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// XYLineChart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Zooming and Panning Example", // Chart Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset // Dataset
);
XYPlot plot = (XYPlot) chart.getPlot();
plot.setDomainPannable(true); // Panning সক্রিয় করা
plot.setRangePannable(true); // Panning সক্রিয় করা
plot.setDomainZoomable(true); // Zooming সক্রিয় করা
plot.setRangeZoomable(true); // Zooming সক্রিয় করা
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- XYPlot এ setDomainPannable(true) এবং setRangePannable(true) ব্যবহার করে প্যানিং সক্রিয় করা হয়েছে।
- setDomainZoomable(true) এবং setRangeZoomable(true) ব্যবহার করে জুমিং সক্রিয় করা হয়েছে।
সারসংক্ষেপ
JFreeChart এ Mouse Events এবং Click Actions যোগ করা সহজ এবং ইন্টারঅ্যাকটিভ ডেটা ভিজুয়ালাইজেশন তৈরি করতে সহায়ক। MouseListener, MouseMotionListener, এবং ChartPanel ব্যবহার করে আপনি মাউস ক্লিক এবং মাউস হোভার ইভেন্ট ট্র্যাক করতে পারেন, এবং Zooming, Panning, Tooltip এবং Click Actions এর মাধ্যমে চার্টের সাথে ইন্টারঅ্যাকশন করার সুবিধা প্রদান করতে পারেন। এই ফিচারগুলো ব্যবহারকারীদের জন্য ডেটার বিশ্লেষণ সহজ এবং কার্যকর করে তোলে।
Read more