【发布时间】:2022-08-13 10:51:38
【问题描述】:
我有一个图表,其中显示了表格的值(股票和日期)。股票显示在 y 轴上,日期显示在 x 轴上。 只要查询返回 2 个条目,它通常会显示为一行,但如果查询只返回一个条目,则不会显示任何内容(那里应该有一个点)。
任何有关如何解决此问题的建议将不胜感激。
2 个条目:enter image description here
1 个条目:enter image description here
代码(图表内置在动作监听器中):
historyButton.addActionListener(e -> {
// stock list and dates list retrieved from database
int articleNr = Integer.parseInt(articleIDText.getText());
List<Integer> displayStockHistory;
List<String> displayDatesStockHistory;
try {
displayStockHistory = business.displayStockHistory(articleNr);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
try {
displayDatesStockHistory = business.displayDatesStockHistory(articleNr);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// add db values to the dataset
for(int i = 0; i < displayStockHistory.size(); i++){
dataset.addValue(displayStockHistory.get(i), \"Articles in Stock\", displayDatesStockHistory.get(i));
}
// compose chart
JFreeChart chart = ChartFactory.createLineChart(
\"Stock History\",
\"Date\",
\"Stock\",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false);
chart.setBackgroundPaint(c2);
chart.getTitle().setPaint(c3);
CategoryPlot p = chart.getCategoryPlot();
p.setForegroundAlpha(0.9f);
CategoryItemRenderer renderer = p.getRenderer();
//renderer.setSeriesPaint(0, c4);
renderer.setSeriesStroke( 0, new BasicStroke( 5 ) );
chart.getCategoryPlot().setBackgroundPaint(c1);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setBackground(c2);
chartScrollPane.getViewport().add(chartPanel);
chartPanel.setPreferredSize(new Dimension(2000, 270));
ChartFrame frame1 = new ChartFrame(\"Line graph\", chart);
frame1.setVisible(true);
frame1.setSize(500, 400);
});
}
标签: java swing jfreechart