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
Read more