usar pestañas con java charts jfreechart jtabbedpane chartpanel

usar - panel con pestañas java netbeans



Agregar ChartPanel a JTabbedPane usando JPanel (1)

Quiero agregar JFreeChart a JPanel y luego agregar JPanel a JTabbedPane . JFreeChart mostrar JFreeChart en JFrame , pero quiero agregar JFreeChart como una cuarta pestaña de JTabbedPane .

Código para mostrar el gráfico:

public class Chart extends javax.swing.JPanel { private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { JPanel jPanel1 = new JPanel(); DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.setValue(60, "Marks", "Student 1"); dataset.setValue(40, "Marks", "Student 2"); dataset.setValue(90, "Marks", "Student 3"); dataset.setValue(50, "Marks", "Student 4"); dataset.setValue(70, "Marks", "Student 5"); dataset.setValue(30, "Marks", "Student 6"); JFreeChart chart = ChartFactory.createBarChart( "Student Marks", "Student Name", "Marks", dataset, PlotOrientation.VERTICAL, false, true, false); CategoryPlot p = chart.getCategoryPlot(); p.setRangeGridlinePaint(Color.BLACK); ChartPanel panel = new ChartPanel(chart); panel.setDomainZoomable(true); jPanel1.add(panel, BorderLayout.CENTER); panel.setPreferredSize(new java.awt.Dimension(500, 270)); }

Código para agregar a TabbedPane:

tabStoreTrans.add("chart", new Chart());


Como se muestra en Cómo usar paneles con pestañas , puede agregar componentes a un panel con pestañas. ChartPanel , una subclase de JPanel , es un componente de este tipo. Además de estos ejemplos , puede usar el ejemplo siguiente para experimentar con otras características.

Como eres nuevo, limita el uso del editor de la GUI de NetBeans, implícito en tu pregunta, pero continúa usando el IDE de NetBeans.

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.Timer; 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.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; /** * @see https://.com/a/15715096/230513 * @see https://.com/a/11949899/230513 */ public class TabChart { private static final int N = 128; private static final Random random = new Random(); private int n = 1; private void display() { JFrame f = new JFrame("TabChart"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JTabbedPane jtp = new JTabbedPane(); jtp.add(String.valueOf(n), createPane()); f.add(jtp, BorderLayout.CENTER); JPanel p = new JPanel(new FlowLayout(FlowLayout.RIGHT)); p.add(new JButton(new AbstractAction("Add") { @Override public void actionPerformed(ActionEvent e) { jtp.add(String.valueOf(++n), createPane()); jtp.setSelectedIndex(n - 1); } })); f.add(p, BorderLayout.SOUTH); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } private ChartPanel createPane() { final XYSeries series = new XYSeries("Data"); for (int i = 0; i < random.nextInt(N) + N / 2; i++) { series.add(i, random.nextGaussian()); } XYSeriesCollection dataset = new XYSeriesCollection(series); new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { series.add(series.getItemCount(), random.nextGaussian()); } }).start(); JFreeChart chart = ChartFactory.createXYLineChart("Test", "Domain", "Range", dataset, PlotOrientation.VERTICAL, false, false, false); return new ChartPanel(chart) { @Override public Dimension getPreferredSize() { return new Dimension(480, 240); } }; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new TabChart().display(); } }); } }