M
Musiumincapitis
Gast
Hallo zusammen
Ich versuche gerade ein Säulendiagramm mit JFreeChart zu erstellen, was leider noch nicht so ganz klappt.
Ich bin bereits so weit, dass ich ein CategoryDataset habe, in dem alle gewünschten Daten vorhanden sind.
Jedoch klappt das erstellen der JFreeChart nicht ... es gibt zwar kein Exptions aber es werden keine Daten übernommen..
Nun bin ich auf der Suche nach einer Lösung für mein Problem...
Das ist der Code den ich bis jetzt habe....
Das hier ist der Konstrucktor der Reporting Klass, welche das Diagramm anzeigen soll
CategoryDataset ist die Methode, welches das DataSet erstellt.
GetTimeValue berechnet eine Zeitdifferenz zwischen 2 Timestamps
GetUsers gibt alle Users zurück
GetProjects macht das gleiche mit den Projekten
createChart ist mein versuch das Diagramm zu erstellen, was aber leider nicht klappt..
Mfg.
Musiumincapitiss
Ich versuche gerade ein Säulendiagramm mit JFreeChart zu erstellen, was leider noch nicht so ganz klappt.
Ich bin bereits so weit, dass ich ein CategoryDataset habe, in dem alle gewünschten Daten vorhanden sind.
Jedoch klappt das erstellen der JFreeChart nicht ... es gibt zwar kein Exptions aber es werden keine Daten übernommen..
Nun bin ich auf der Suche nach einer Lösung für mein Problem...
Das ist der Code den ich bis jetzt habe....
Das hier ist der Konstrucktor der Reporting Klass, welche das Diagramm anzeigen soll
Java:
public Reporting(boolean allUser, User user)
{
try
{
ApplicationFrame chartFrame;
if(allUser)
{
chartFrame = new ApplicationFrame("Working Time - All Users");
}
else
{
chartFrame = new ApplicationFrame("Working Time - " + user.GetUserName() + " (" + user.GetName() + ", "+ user.GetPrename() + ")");
}
CategoryDataset dataset = CreateDataset(allUser, user);
JFreeChart chart = createChart(dataset, allUser);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(500, 270));
chartFrame.pack();
RefineryUtilities.centerFrameOnScreen(chartFrame);
chartFrame.setVisible(true);
}
catch (Exception ex)
{
JOptionPane.showMessageDialog(null, ex.toString(), MSGBOX, JOptionPane.OK_OPTION);
}
}
CategoryDataset ist die Methode, welches das DataSet erstellt.
GetTimeValue berechnet eine Zeitdifferenz zwischen 2 Timestamps
GetUsers gibt alle Users zurück
GetProjects macht das gleiche mit den Projekten
Java:
private CategoryDataset CreateDataset(boolean allUser, User user)
{
try
{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
ArrayList<User> users = new ArrayList<User>();
ArrayList<Project> projects = GetProjects();
if(allUser)
{
users = GetUsers();
}
else
{
users.add(user);
}
for(int i = 0; i < projects.size(); i++)
{
for(int c = 0; c < users.size(); c++)
{
dataset.addValue(GetTimeValue(users.get(c).GetPK(), projects.get(i).GetPK()), projects.get(i).GetProject(), users.get(c).GetUserName());
}
}
return dataset;
}
catch (Exception ex)
{
JOptionPane.showMessageDialog(null, ex.toString(), MSGBOX, JOptionPane.OK_OPTION);
return new DefaultCategoryDataset();
}
}
createChart ist mein versuch das Diagramm zu erstellen, was aber leider nicht klappt..
Java:
private JFreeChart createChart(CategoryDataset dataset, boolean allUser)
{
JFreeChart chart = ChartFactory.createBarChart
(
"...."l,
"User",
"Spent Time",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false
);
chart.setBackgroundPaint(Color.white);
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setDrawBarOutline(false);
GradientPaint gp = new GradientPaint(
0.0f, 0.0f, Color.blue,
0.0f, 0.0f, Color.lightGray
);
renderer.setSeriesPaint(2, gp);
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0));
return chart;
}
Mfg.
Musiumincapitiss