JFreeChart একটি শক্তিশালী Java লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশন ও বিভিন্ন ধরনের চার্ট তৈরির জন্য ব্যবহৃত হয়। আপনি JFreeChart ব্যবহার করে বিভিন্ন ধরনের চার্ট তৈরি করতে পারেন, যেমন Line Chart, Bar Chart, Pie Chart ইত্যাদি। JavaFX একটি শক্তিশালী UI লাইব্রেরি যা গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) তৈরি করতে ব্যবহৃত হয়।
কখনও কখনও, আপনি যদি JFreeChart এর চার্ট JavaFX অ্যাপ্লিকেশনে ব্যবহার করতে চান, তবে আপনাকে JFreeChart কে JavaFX Scene এর মধ্যে এমবেড করতে হবে। যদিও JFreeChart এবং JavaFX একে অপরের সাথে একীভূত নয়, তবে কিছু কাস্টমাইজেশন এবং ইন্টিগ্রেশন ব্যবহার করে JFreeChart কে JavaFX Scene এর মধ্যে এমবেড করা সম্ভব।
এই গাইডে, আমরা দেখব কিভাবে JFreeChart কে JavaFX Scene-এ এমবেড করা যায়।
1. JavaFX এবং JFreeChart এর মধ্যে Integration
JFreeChart এবং JavaFX একে অপরের সাথে সরাসরি সংযুক্ত নয়, কিন্তু আপনি JFreeChart এর ChartPanel কে JavaFX-এর Pane বা Canvas-এ এমবেড করতে পারেন।
JavaFX-এর জন্য JFreeChart এমবেড করতে, আপনাকে JFreeChart চার্টকে একটি JavaFX Node-এ রেন্ডার করতে হবে। এটি করার জন্য, JFreeChart এর ChartPanel ব্যবহার করা হয় যা Swing উপাদান, এবং তারপরে SwingNode ক্লাস ব্যবহার করে JavaFX সিস্টেমে এমবেড করা হয়।
2. JavaFX Scene এ JFreeChart এমবেড করার উদাহরণ
2.1. SwingNode ব্যবহার করে JFreeChart কে JavaFX Scene-এ এমবেড করা
JavaFX এর SwingNode ক্লাস ব্যবহার করে JFreeChart চার্ট JavaFX-এ এমবেড করা যায়। এখানে একটি উদাহরণ দেখানো হলো যেখানে JFreeChart কে SwingNode ব্যবহার করে JavaFX Scene-এ এমবেড করা হয়েছে।
উদাহরণ কোড:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.Region;
import javafx.stage.Stage;
import javafx.embed.swing.SwingNode;
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 javax.swing.*;
public class JFreeChartInJavaFX extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// Dataset তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Category1", "Jan");
dataset.addValue(20, "Category1", "Feb");
dataset.addValue(30, "Category1", "Mar");
// Line Chart তৈরি করা
JFreeChart chart = ChartFactory.createLineChart(
"Example Line Chart", // Chart Title
"Month", // X-Axis Label
"Value", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Plot Orientation
true, // Show Legend
true, // Tooltips
false // URLs
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// SwingNode ব্যবহার করে JFreeChart কে JavaFX Scene-এ এমবেড করা
SwingNode swingNode = new SwingNode();
swingNode.setContent(chartPanel);
// JavaFX Layout: StackPane
StackPane root = new StackPane();
root.getChildren().add(swingNode);
// JavaFX Scene তৈরি করা
Scene scene = new Scene(root, 800, 600);
primaryStage.setTitle("JFreeChart in JavaFX");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- Dataset: আমরা একটি DefaultCategoryDataset তৈরি করেছি যা একাধিক মাসের জন্য Category1 এর ডেটা ধারণ করে।
- Chart Creation:
ChartFactory.createLineChart()মেথড ব্যবহার করে একটি Line Chart তৈরি করা হয়েছে। - ChartPanel: এটি JFreeChart এর গ্রাফিক্যাল উপস্থাপনাকে Swing উপাদান হিসেবে তৈরি করে।
- SwingNode: SwingNode JavaFX-এ Swing উপাদান এমবেড করার জন্য ব্যবহৃত হয়। এখানে আমরা JFreeChart কে SwingNode ব্যবহার করে JavaFX Scene-এ এমবেড করেছি।
- Scene: JavaFX Scene তৈরি করা হয়েছে এবং সেটিতে SwingNode যোগ করা হয়েছে, যাতে JFreeChart-টি JavaFX GUI তে দেখানো যায়।
3. JFreeChart কে JavaFX-এ আরো কাস্টমাইজ করা
SwingNode এবং ChartPanel ব্যবহার করার মাধ্যমে আপনি JFreeChart-কে JavaFX Scene-এ এমবেড করতে পারেন। এর পাশাপাশি, আপনি ChartPanel এর বিভিন্ন বৈশিষ্ট্য কাস্টমাইজ করতে পারেন যেমন:
Zooming: ChartPanel এর মাধ্যমে জুমিং সক্রিয় করতে পারেন।
chartPanel.setMouseWheelEnabled(true); // Enable zooming using mouse wheelPanning: চার্টের মধ্যে প্যানিং সক্রিয় করতে পারেন।
chartPanel.setPreferredSize(new java.awt.Dimension(1000, 800)); // Enable panning by adjusting chart sizeTooltips: টুলটিপ সক্রিয় করতে পারেন।
chartPanel.setToolTipText("Hover over a data point to see the value.");
4. JavaFX-এ আরও উন্নত JFreeChart এমবেডিং (Alternative Approaches)
JavaFX-এ JFreeChart এমবেড করার জন্য কিছু বিকল্প পদ্ধতি রয়েছে:
- Using JavaFX's Canvas: আপনি JavaFX এর Canvas উপাদান ব্যবহার করে জেফ্রিচার্টের কাস্টম ড্রয়িং তৈরি করতে পারেন।
- Using Jzy3d for 3D charts: Jzy3d একটি Java লাইব্রেরি যা 3D ডেটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহৃত হয়। আপনি JavaFX এর সাথে Jzy3d ইনটিগ্রেট করতে পারেন এবং 3D চার্ট তৈরি করতে পারেন।
- Using JavaFX Embedded Swing: আপনি JavaFX এর SwingNode এবং JFreeChart এর সাথে ইন্টিগ্রেটেশন কাস্টমাইজ করে আরও উন্নত ফিচার যোগ করতে পারেন, যেমন ডেটা পয়েন্টের উপর ক্লিক করলে ডেটা পরিবর্তন বা নতুন ডেটা আপডেট।
5. সারাংশ
JFreeChart কে JavaFX Scene-এ এমবেড করতে, SwingNode ব্যবহার করা একটি সহজ পদ্ধতি। আপনি ChartPanel ব্যবহার করে JFreeChart তৈরি করে সেটি JavaFX-এ এমবেড করতে পারেন। JFreeChart এবং JavaFX এর সংমিশ্রণ একটি শক্তিশালী ডেটা ভিজ্যুয়ালাইজেশন টুল তৈরি করে যা ব্যবহারকারীদের জন্য ইন্টারেকটিভ এবং কার্যকরী অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।
Read more