JFreeChart in GUI

anderesobst

Neues Mitglied
Hallo,
ich versuche eine Chart, die ich durch JFreeChart erstelle in einem Tab einer GUI darzustellen und scheitere leider daran. Kann mir vielleicht jemand helfen! Ich programmiere noch nicht so lange, deshalb kann es gut sein, dass ich da manche Sachen auch durcheinanderbringe.

Hier das Programm der Chart:
Java:
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;

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.IntervalXYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class XYBarChart extends ApplicationFrame {

	                    
  	ChartPanel chartPanel;

	@SuppressWarnings("deprecation")
	public XYBarChart() {
		super("title");
		IntervalXYDataset dataset = createDataset();
		JFreeChart chart = createChart(dataset);
		chartPanel = new ChartPanel(chart, false);
		chartPanel.setPreferredSize(new java.awt.Dimension(1000, 540));
		setContentPane(chartPanel);
		pack();
		setVisible(true);
		
	}
	
	public ChartPanel getChartPanel() {
		return this.chartPanel;
	}
	

  	/**
   * create a dataset
   * @return dataset
   */
	private IntervalXYDataset createDataset() {
		XYSeriesCollection dataset = new XYSeriesCollection();
		
		double [] d = {172, 174, 176, 177, 178, 179, 179, 184, 187, 189, 191, 193};
		double [] e = {172, 175, 177, 180 , 182, 183, 188, 192};

		XYSeries series1 = new XYSeries("S1");
		for(int i=0; i<d.length; i++){
			series1.add(d[i], 1);   
		}
		dataset.addSeries(series1);
		
    	     
		XYSeries series2 = new XYSeries("S2");
		for(int i=0; i<e.length; i++){
			series2.add(e[i], 1);   
		}
		dataset.addSeries(series2);
     			
		return dataset;
      }
	
	/**
   * create a chart with ChartFactory
   *
   * @param dataset
   * @return
   */
	private JFreeChart createChart(IntervalXYDataset dataset) {
		JFreeChart chart = ChartFactory.createXYBarChart(
				"Series",
				"Frequenz",
				false,
				"Amplitude",
				dataset,
				PlotOrientation.VERTICAL,
				true,
				true,
				false
				);
		
		return chart;	
	}
/**
   * starting point
   * @param args
   */

	public static void main(String[] args){
		XYBarChart test = new XYBarChart();
		test.pack();										
		RefineryUtilities.centerFrameOnScreen(test);
		test.setVisible(true);
	}
}


und hier meine Gui. Ich versuche in den second Tab (Zeile 156) die Chart zu bekommen, was mir nicht gelingen mag. Hoffe das ist richtig, dass ich den Code poste! Vielen Dank für Hilfe!

Java:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentListener;

import javax.swing.*;

import org.jfree.ui.RefineryUtilities;

import elements.*;

public class GUI implements ActionListener{
		
	JFrame basicFrame; 
//	chartPanel; 
	/*Buttons*/
	JButton start;
	JButton stop;
	
	/*menuItems */
	JMenuItem options; 
	JMenuItem refresh; 
	JMenuItem print; 
	JMenuItem preferences; 
	JMenuItem save;
	JMenuItem load;
	
	JMenuBar menuBar; 
	
	Container container; 
	
	public GUI(){
		basicFrame = new JFrame("CENGui");
	
		/** Items for Menu File */		
		load = new JMenuItem("Load");
		save = new JMenuItem("Save");
		
		/** ActionListener */
		load.addActionListener(this);
		save.addActionListener(this);
		
		/** Items for Menu edit */
		options = new JMenuItem("options");
		refresh = new JMenuItem("refresh");
		print = new JMenuItem("print");
		preferences = new JMenuItem("preferences");
		
		/** building menubar File */
		JMenuBar menuBar = new JMenuBar();
		JMenu menuFile = new JMenu("File");
		menuFile.add(load);
		menuFile.add(save);
		menuFile.addSeparator();
		menuBar.add(menuFile);	
	
		/** building menubar Edit */
		JMenu menuEdit = new JMenu("Edit");
		menuEdit.add(options);
		menuEdit.add(refresh);
		menuEdit.add(print);
		menuEdit.addSeparator();
		menuEdit.add(preferences);
		menuBar.add(menuEdit);	
	
		/** Items for Buttons */
		ImageIcon startIcon = new ImageIcon("0start.png");
		
		/** building buttons */
		JButton go = new JButton("go", startIcon);
		
		
		/** mixing the main frame together */
		
		basicFrame.add(menuBar, BorderLayout.NORTH);
		basicFrame.setSize(1024, 800);
		basicFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		RefineryUtilities.centerFrameOnScreen(basicFrame);
		basicFrame.setVisible(true);
		
		Slider pickNum = new Slider(); 
	
		PanelTab tab = new PanelTab(); 
		
		JPanel buttonPanel = new JPanel(new GridBagLayout());

		
		
	    GridBagConstraints gbc = new GridBagConstraints();
	    gbc.fill = GridBagConstraints.HORIZONTAL;
	    gbc.weightx = 1.0;
	    buttonPanel.add(pickNum, gbc);
	      
	    gbc.fill = GridBagConstraints.HORIZONTAL;
	    gbc.gridy = 1;
	    buttonPanel.add(go, gbc);
		
//	    XYBarChart chartPanel = null;
		basicFrame.add(tab, BorderLayout.CENTER);
		basicFrame.add(buttonPanel, BorderLayout.WEST);
		
	}
	
	
	/** start the program */
	public static void main(String[] args) {
//		EventQueue.invokeLater(new Runnable(){
//			public void run(){
		
		new GUI();
			}
//		});	
//	}
		
    
	
//	class Chart{
//	public JPanel run(){
//		XYBarChart test = new XYBarChart();
//		
//		}		}
//	}
	
/**
 * class which creates two tabs with textfields	
 * @author rhupke
 *
 */
	class PanelTab extends JTabbedPane{
	
		PanelTab(){
			JPanel mainTab = new JPanel(); 
			JPanel secondTab = new JPanel();
			mainTab.setLayout(new BorderLayout());
			secondTab.setLayout(new BorderLayout());
			
			JTextArea comments = new JTextArea();
			JScrollPane textPanelOne = new JScrollPane(comments,
					ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
			        ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
			
//			new XYBarChart();
			
			JTextArea commentsTwo = new JTextArea();
			JScrollPane textPanelTwo = new JScrollPane(commentsTwo,
					ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
			        ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

			secondTab.add("Center", textPanelOne);
			mainTab.add("Center", textPanelTwo);
			addTab("main", mainTab);
			addTab("second", secondTab);
		}
	}
	
	
	
	/**
	 * actionPerformed actually only for menubar load and save
	 * reaction from 
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if (e.getSource() == load){
			SimpleFrame loadFrame = new SimpleFrame();
//			RefineryUtilities.centerFrameOnScreen(frameLoad);
		}
		if (e.getSource() == save){
//			System.out.println("save wurde angeklickt");
			SimpleFrame saveFrame = new SimpleFrame();
		}
	}
	
	
	
	
}
 
S

SlaterB

Gast
an dem XYBarChart siehst du das dass du ein ChartPanel bekommen kannst,
was ein Panel ist weißt du hoffentlich,
dieses Panel eines der Tabs sein, wie die anderen Panel mainTab und secondTab auch,

bisher hast du in der GUI kaum Anstalten die Chart bzw. das ChartPanel einzufügen,
natürlich könnte das jemand komplett übernehmen, aber warum gehst du es nicht selber an?
was hast du schon versucht, was scheitert konkret?
 

anderesobst

Neues Mitglied
Hallo,
Danke erstmal für deine Antwort. Stimmt, du hast Recht, wenn man so rüberschaut, sieht man nicht, was ich schon alles ausporbiert habe. Ich möchte auf keinen Fall eine komplette Lösung, nur Hilfe.
(Hab den ganzen Mist immer wieder gelöscht...)
Meine letzte Überlegung war folgende, ich glaube das schreibst du ja eigentlich auch.
In der XYBarChart erzeuge ich ja einen ChartPanel, diesen müsste ich doch eigentlich nur in der Gui aufrufen und in mein Tab adden!?
Daran scheitere ich leider bisher immer dran da ich nicht so richtig weiß, wie ich das Panel aus der XYChart herausbekomme! (ich weiß, im Grunde wohl eine elementare Frage aber ich programmiere noch nicht so lange und habe gleich dieses, zumindest für mich recht umfangreiche Projekt aufgedrückt bekommen...)
 
S

SlaterB

Gast
du solltest nicht XYBarChart so wie es ist mit eigenen JFrame und setVisible(true) übernehmen,
da ist schon bisschen was zu kürzen,
ansonsten hängt alles von deiner Organisation ab, im kürzeren Falle genau da wo benötigt ein Objekt von der Chart erzeugen
und getChartPanel() aufrufen, falls es nicht nach Umbau schon selber das Panel ist

was soll man dazu sagen? was kann an diesen 1-2 Zeilen Aufruf schwer sein?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JFreeChart X-Achse Werte skalieren, begrenzen, zoomen AWT, Swing, JavaFX & SWT 5
H JFreeChart BarDiagramm Balken der gleichen Serie unterschiedliche Farbe zuordnen AWT, Swing, JavaFX & SWT 2
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H JFreeChart Charts überlagern AWT, Swing, JavaFX & SWT 2
C JFreeChart x-Achse mit absteigenden Werten AWT, Swing, JavaFX & SWT 1
K JFreeChart nicht ohne BarChartDemo startklar? AWT, Swing, JavaFX & SWT 5
T 2D-Grafik JFreeChart mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
D Swing JFreeChart Crosshair Label - setPreferredSize oder ähnliches, aber wo ? AWT, Swing, JavaFX & SWT 1
N jFreeChart einzelne Punkte anwählen und Formatieren AWT, Swing, JavaFX & SWT 0
B JFreeChart Gantt Höhe Tasks AWT, Swing, JavaFX & SWT 1
V JFreeChart: Tooltip auf Knopfdruck anzeigen AWT, Swing, JavaFX & SWT 2
V JFreechart: In Linechart Linien einzeichnen und Bereiche färben AWT, Swing, JavaFX & SWT 4
M In JFreeChart Geraden erzeugen AWT, Swing, JavaFX & SWT 11
M JFreechart Zoom out AWT, Swing, JavaFX & SWT 2
M Swing JFreechart X-Achse Tick auslesen AWT, Swing, JavaFX & SWT 13
M Swing JFreechart zoom x-achse neue Werte AWT, Swing, JavaFX & SWT 4
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
Z Diagramm mit jfreechart quadratisch erstellen AWT, Swing, JavaFX & SWT 1
D JFreeChart range der Y Achse verändern. AWT, Swing, JavaFX & SWT 1
G JFreeChart - SetSeriesColor Problem AWT, Swing, JavaFX & SWT 3
K 2D-Grafik JFreeChart plot.setBackgroundImage() AWT, Swing, JavaFX & SWT 1
K 2D-Grafik JFreeChart DateAxis AWT, Swing, JavaFX & SWT 9
T Event Handling JFreeChart Update AWT, Swing, JavaFX & SWT 2
A JFreeChart BarChart invertierte anzeige oder werte bereich von-bis AWT, Swing, JavaFX & SWT 4
Farbtopf Live update JFreeChart AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
D JFreeChart - aktuelle code beispiele AWT, Swing, JavaFX & SWT 11
M JFreeChart in ein File schreiben (bzw. JFrame in ein File Schreiben) AWT, Swing, JavaFX & SWT 2
E JFreeChart: Timeseries-Chart und Area-Chart "überlappen" lassen AWT, Swing, JavaFX & SWT 6
B JFreeChart-Erweiterungen AWT, Swing, JavaFX & SWT 4
E JFreeChart in einer dynamischen Aufzeichnung neue Serien hinzufügen? AWT, Swing, JavaFX & SWT 7
I XML - JFreeChart AWT, Swing, JavaFX & SWT 15
N Dynamische JFreechart updated UI nicht AWT, Swing, JavaFX & SWT 5
S JFreeChart - Schriftgröße der Legende AWT, Swing, JavaFX & SWT 2
O Swing JFreechart subtitle formatieren AWT, Swing, JavaFX & SWT 3
N JFreeChart: Plot soll mit skalieren AWT, Swing, JavaFX & SWT 5
R JFreeChart Plots AWT, Swing, JavaFX & SWT 6
J JFreechart spezielles Balkendiagramm AWT, Swing, JavaFX & SWT 2
R JFreeChart: nur jeden n-ten Wert auf der X-Achse anzeigen AWT, Swing, JavaFX & SWT 5
R JFreeChart aktualisieren wenn sich die Ausgangsdaten ändern AWT, Swing, JavaFX & SWT 8
T JFreeChart Linine einzeichnen AWT, Swing, JavaFX & SWT 2
M JFreeChart Ausrichtung der Balken AWT, Swing, JavaFX & SWT 2
R jFreeChart in eine NetBeans Projekt integrieren AWT, Swing, JavaFX & SWT 24
D JFreeChart Breite (width) ändern AWT, Swing, JavaFX & SWT 6
A Swing JFreeChart, Gantt, Schichtplan AWT, Swing, JavaFX & SWT 3
R JFreeChart Skalierung zur Laufzeit ändern AWT, Swing, JavaFX & SWT 7
F Wie lade ich eine CategoryDataset aus XML ins JFreeChart? AWT, Swing, JavaFX & SWT 9
J JFreeChart - mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
A JFreeChart: 2 X-Achsen für ein Dataset AWT, Swing, JavaFX & SWT 2
T JFreeChart export Problem AWT, Swing, JavaFX & SWT 4
S JFreeChart Achse immer sichtbar AWT, Swing, JavaFX & SWT 2
D JFreechart maximalangezeigter Wertebereich AWT, Swing, JavaFX & SWT 3
B AWT [JFreeChart] malt nicht so wie ich will :-( AWT, Swing, JavaFX & SWT 2
B JFreeChart Balkendiagramm ActionEvent AWT, Swing, JavaFX & SWT 2
L Labels sichtbar - JFreeChart AWT, Swing, JavaFX & SWT 5
A Schachbrettartiges Diagramm mit JFreeChart AWT, Swing, JavaFX & SWT 4
E JFreeChart AWT, Swing, JavaFX & SWT 2
L Gantt Chart - JFreeChart AWT, Swing, JavaFX & SWT 5
K JFreeChart im JScrollPane ausblenden AWT, Swing, JavaFX & SWT 2
L JFreeChart Labelrotation AWT, Swing, JavaFX & SWT 2
L JFreeChart Farbe von Balken AWT, Swing, JavaFX & SWT 5
L JFreeChart Balkenanordnung AWT, Swing, JavaFX & SWT 10
L JFreeChart Achsenskalierung AWT, Swing, JavaFX & SWT 4
L JFreeChart - Dataset befüllen AWT, Swing, JavaFX & SWT 2
L JFreeChart - Line Shapes AWT, Swing, JavaFX & SWT 15
N JFreeChart - Basics AWT, Swing, JavaFX & SWT 2
L NullPointerException JFreeChart AWT, Swing, JavaFX & SWT 10
L JFreeChart - Legende vertikal AWT, Swing, JavaFX & SWT 5
L JFreeChart - Linienstärke einstellen AWT, Swing, JavaFX & SWT 2
L JFreeChart Einstellungen AWT, Swing, JavaFX & SWT 22
L JFreeChart - Gitterfarbe schwarz AWT, Swing, JavaFX & SWT 4
L JFreeChart StackedBar + Line-Chart kombinieren AWT, Swing, JavaFX & SWT 4
L JFreeChart - Performance bei PNG-Erstellung AWT, Swing, JavaFX & SWT 5
L JFreeChart - Legende beliebig positionieren AWT, Swing, JavaFX & SWT 16
G JFreechart Balken einfärben AWT, Swing, JavaFX & SWT 6
F Probleme mit NumberAxis bei JFreeChart AWT, Swing, JavaFX & SWT 5
G jfreechart (Diagramm speichern mit ein vorgegebenen Namen) AWT, Swing, JavaFX & SWT 6
S JFreeChart neu zeichnen sich das Datenset geändert hat. AWT, Swing, JavaFX & SWT 4
K JFreeChart Eigentschaften des Charts ändern AWT, Swing, JavaFX & SWT 8
G JFreeChart und das updaten AWT, Swing, JavaFX & SWT 7
G Ausser Jfreechart, Chart Programme? AWT, Swing, JavaFX & SWT 11
S Dimensionen JFreeChart AWT, Swing, JavaFX & SWT 5
S JFreeChart Stufendiagramm AWT, Swing, JavaFX & SWT 2
H Problem beim zeichen eines TimeSeriesChart mit jfreechart AWT, Swing, JavaFX & SWT 5
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
M JFreeChart Handbuch? AWT, Swing, JavaFX & SWT 8
P JFreeChart - TimeSeriesDiagram AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben