JavaFX একটি শক্তিশালী GUI ফ্রেমওয়ার্ক যা জাভা অ্যাপ্লিকেশনের জন্য গ্রাফিক্যাল ইউজার ইন্টারফেস তৈরি করতে ব্যবহৃত হয়। আপনি JFreeChart এর সাহায্যে JavaFX এ ডেটা ভিজ্যুয়ালাইজেশন চার্ট তৈরি করতে পারেন, যেমন Bar Chart, Line Chart, এবং Pie Chart। এখানে আমরা দেখব কিভাবে JavaFX এবং JFreeChart ব্যবহার করে একটি Dashboard তৈরি করা যায়।
1. JavaFX এবং JFreeChart একত্রে ব্যবহার
JFreeChart এবং JavaFX একত্রে ব্যবহার করার জন্য, আপনাকে JFreeChart এর ChartPanel ক্লাসকে JavaFX এর Scene বা Layout এ এম্বেড করতে হবে। JavaFX এর JFXPanel ক্লাস ব্যবহার করে আপনি Swing কম্পোনেন্ট (যেমন, JFreeChart) JavaFX উইন্ডোতে অন্তর্ভুক্ত করতে পারবেন।
2. JavaFX Dashboard তৈরি করার উদাহরণ
এখানে আমরা একটি JavaFX Dashboard তৈরি করব যা তিনটি জনপ্রিয় চার্ট Bar Chart, Line Chart, এবং Pie Chart এর মাধ্যমে ডেটা ভিজ্যুয়ালাইজ করবে।
2.1 JavaFX Dashboard Code Example
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class JavaFXDashboardExample extends Application {
@Override
public void start(Stage primaryStage) {
// Create the Bar Chart
DefaultCategoryDataset barDataset = new DefaultCategoryDataset();
barDataset.addValue(4, "Category 1", "Jan");
barDataset.addValue(7, "Category 1", "Feb");
barDataset.addValue(3, "Category 1", "Mar");
JFreeChart barChart = ChartFactory.createBarChart(
"Bar Chart",
"Month",
"Value",
barDataset,
PlotOrientation.VERTICAL,
true,
true,
false
);
// Customize the Bar Renderer (Color, Style, etc.)
CategoryPlot barPlot = barChart.getCategoryPlot();
BarRenderer barRenderer = (BarRenderer) barPlot.getRenderer();
barRenderer.setSeriesPaint(0, Color.GREEN);
// Create the Line Chart
XYSeries lineSeries = new XYSeries("Line Data");
lineSeries.add(1, 1);
lineSeries.add(2, 3);
lineSeries.add(3, 5);
lineSeries.add(4, 7);
XYSeriesCollection lineDataset = new XYSeriesCollection(lineSeries);
JFreeChart lineChart = ChartFactory.createXYLineChart(
"Line Chart",
"X-Axis",
"Y-Axis",
lineDataset,
PlotOrientation.VERTICAL,
true,
true,
false
);
// Customize the Line Chart Renderer
XYLineAndShapeRenderer lineRenderer = new XYLineAndShapeRenderer();
lineRenderer.setSeriesPaint(0, Color.RED);
lineChart.getXYPlot().setRenderer(lineRenderer);
// Create the Pie Chart
DefaultPieDataset pieDataset = new DefaultPieDataset();
pieDataset.setValue("Category 1", 45.0);
pieDataset.setValue("Category 2", 35.0);
pieDataset.setValue("Category 3", 20.0);
JFreeChart pieChart = ChartFactory.createPieChart(
"Pie Chart",
pieDataset,
true,
true,
false
);
// Customize Pie Chart (Legend, Colors)
PiePlot piePlot = (PiePlot) pieChart.getPlot();
piePlot.setSectionPaint("Category 1", Color.BLUE);
piePlot.setSectionPaint("Category 2", Color.ORANGE);
piePlot.setSectionPaint("Category 3", Color.GREEN);
// Convert JFreeChart panels to JavaFX panels
ChartPanel barChartPanel = new ChartPanel(barChart);
ChartPanel lineChartPanel = new ChartPanel(lineChart);
ChartPanel pieChartPanel = new ChartPanel(pieChart);
// Convert to JavaFX components
JFXPanel barFXPanel = new JFXPanel();
barFXPanel.setScene(new Scene(new HBox(barChartPanel), 400, 300));
JFXPanel lineFXPanel = new JFXPanel();
lineFXPanel.setScene(new Scene(new HBox(lineChartPanel), 400, 300));
JFXPanel pieFXPanel = new JFXPanel();
pieFXPanel.setScene(new Scene(new HBox(pieChartPanel), 400, 300));
// Arrange charts in a layout
HBox layout = new HBox();
layout.getChildren().addAll(barFXPanel, lineFXPanel, pieFXPanel);
// Create the main scene
Scene scene = new Scene(layout, 1200, 400);
primaryStage.setTitle("JavaFX Dashboard with JFreeChart");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- Bar Chart:
DefaultCategoryDatasetব্যবহার করে ডেটা তৈরি করা হয়েছে এবং BarRenderer কাস্টমাইজ করা হয়েছে বারগুলির রঙ এবং শেপ পরিবর্তন করার জন্য।
- Line Chart:
XYSeriesদিয়ে ডেটা তৈরি করা হয়েছে এবং XYLineAndShapeRenderer ব্যবহার করে লাইন এবং পয়েন্টের রঙ কাস্টমাইজ করা হয়েছে।
- Pie Chart:
DefaultPieDatasetব্যবহার করে পি-চার্টের ডেটা তৈরি করা হয়েছে এবং PiePlot কাস্টমাইজ করে পি-চার্টের সেকশনের রঙ পরিবর্তন করা হয়েছে।
- JavaFX Panel:
- JFreeChart এর ChartPanel কে JFXPanel এ এম্বেড করা হয়েছে, যাতে JavaFX এর GUI তে চার্টগুলি প্রদর্শিত হয়।
3. ChartPanel কাস্টমাইজেশন:
JFreeChart এ ChartPanel ক্লাস ব্যবহার করে চার্টগুলির বিভিন্ন দিক কাস্টমাইজ করা যায়:
- ChartPanel.setPreferredSize(): চার্টের আকার নির্ধারণ করা।
- setMouseWheelEnabled(true): মাউস হুইল দিয়ে জুমিং সক্ষম করা।
- setMouseListener: মাউস ইভেন্ট শোনার জন্য কাস্টম ফাংশন প্রয়োগ করা।
4. JavaFX UI Elements সঙ্গে Dashboard কাস্টমাইজ করা
JavaFX ব্যবহার করে আপনি ড্যাশবোর্ডের অন্যান্য UI উপাদান যেমন বাটন, লেবেল, এবং টেক্সট ফিল্ড যোগ করতে পারেন।
উদাহরণ:
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
Button button = new Button("Update Data");
button.setOnAction(e -> {
// Perform an action like refreshing the chart data
});
VBox layout = new VBox();
layout.getChildren().addAll(button, barFXPanel, lineFXPanel, pieFXPanel);
এখানে, আপনি Button বা অন্য UI উপাদান যোগ করে JavaFX ড্যাশবোর্ডে অন্যান্য ইন্টারেক্টিভ ফিচার অন্তর্ভুক্ত করতে পারেন।
সারাংশ
JavaFX এবং JFreeChart একত্রে ব্যবহার করে একটি ইন্টারেক্টিভ Dashboard তৈরি করা খুবই সুবিধাজনক। JFreeChart এর মাধ্যমে বিভিন্ন ধরনের Bar Chart, Line Chart, এবং Pie Chart তৈরি করা সম্ভব, যা আপনি JavaFX এর কাস্টম UI উপাদানের সাথে মিশিয়ে একটি সুন্দর ড্যাশবোর্ড তৈরি করতে পারেন। এতে আপনি ChartPanel, JFXPanel, এবং বিভিন্ন JavaFX লেআউট ব্যবহার করে ডেটার ভিজ্যুয়ালাইজেশন এবং ইন্টারেক্টিভ ফিচারস যোগ করতে পারেন।
Read more