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:
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!
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();
}
}
}