我对Java很陌生,并试图掌握JFreeChart。我正在尝试从这个网站运行一些演示代码:chart.htm
下面是演示代码(剩下的问题如下):
import java.awt.Color;
import java.awt.BasicStroke;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
public class XYLineChart_AWT extends ApplicationFrame {
public XYLineChart_AWT( String applicationTitle, String chartTitle ) {
super(applicationTitle);
JFreeChart xylineChart = ChartFactory.createXYLineChart(
chartTitle ,
"Category" ,
"Score" ,
createDataset() ,
PlotOrientation.VERTICAL ,
true , true , false);
ChartPanel chartPanel = new ChartPanel( xylineChart );
chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
final XYPlot plot = xylineChart.getXYPlot( );
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
renderer.setSeriesPaint( 0 , Color.RED );
renderer.setSeriesPaint( 1 , Color.GREEN );
renderer.setSeriesPaint( 2 , Color.YELLOW );
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );
renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );
plot.setRenderer( renderer );
setContentPane( chartPanel );
}
private XYDataset createDataset( ) {
final XYSeries firefox = new XYSeries( "Firefox" );
firefox.add( 1.0 , 1.0 );
firefox.add( 2.0 , 4.0 );
firefox.add( 3.0 , 3.0 );
final XYSeries chrome = new XYSeries( "Chrome" );
chrome.add( 1.0 , 4.0 );
chrome.add( 2.0 , 5.0 );
chrome.add( 3.0 , 6.0 );
final XYSeries iexplorer = new XYSeries( "InternetExplorer" );
iexplorer.add( 3.0 , 4.0 );
iexplorer.add( 4.0 , 5.0 );
iexplorer.add( 5.0 , 4.0 );
final XYSeriesCollection dataset = new XYSeriesCollection( );
dataset.addSeries( firefox );
dataset.addSeries( chrome );
dataset.addSeries( iexplorer );
return dataset;
}
public static void main( String[ ] args ) {
XYLineChart_AWT chart = new XYLineChart_AWT("Browser Usage Statistics",
"Which Browser are you using?");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
}
}
我无法运行演示代码,因为我无法从JFreeChart库导入任何类。
例如,当我试图导入org.jfree.chart.ChartPanel
时,我会得到错误“org.jfreechart.ChartPanel类型不可访问”。
我遵循了PDF安装指南(http://www.jfree.org/jfreechart/download/jfreechart-1.0.0-install.pdf)。
我已经将库导入到项目文件夹中。
我检查了库JAR,它们包含了我试图导入的所有类。
系统信息:
JRE版本- JavaSE 11/ JDK 11
Eclipse版本- 4.11.0
库应该被导入,代码应该运行良好,尽管Eclipse说它们是不可访问的。
预先感谢任何人花时间阅读以下内容:)
发布于 2019-03-27 20:46:34
考虑到您正在使用Java 11,您可能还创建了一个
module-info.java
文件。这将是在…的线上
module yourmodulename {
...
}
要获得对jfreechart
自动模块的访问,您需要它
module yourmodulename {
requires jfreechart;
}
另外,您所关注的PDF教程也非常过时。使用Maven或Gradle作为依赖关系管理工具。如果你需要进一步澄清,请告诉我。
Maven:
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.0</version>
</dependency>
格莱德尔:
implementation('org.jfree:jfreechart:1.5.0')
https://stackoverflow.com/questions/55386075
复制相似问题