JSP页面中嵌入动态图表的两种方法 :在JSP页面中插入Applet小程序 ;通过JavaBean动态生成图像。
JSP是一种广泛应用的网页设计技术 ,它是一种HTML和Java脚本混合的编程技术 ,它结合了HTML的静态特性和Java语言的动态能力 ,因此用它进行动态网页设计非常方便。在进行图像处理时 ,一般处理静态非常容易 ,但是 ,在实际应用中常常需要动态地在网页中生成二维的图形
基于JFreeChart开发的一个时序图的绘制。代码如下:
实例中createDataset()方法用于创建数据集合对象。时序图的数据集合与其他数据集合不同,它需要添加一个时间段内的所有数据,通常采用TimeSeries类进行添加。该实例中通过Math类的random()方法进行随机生成。
import javaawt;
import javaawteventActionEvent;
import
javaawteventActionListener;
import javaioBufferedInputStream;
import
javaioDataInputStream;
import javaioFileOutputStream;
import
javaioIOException;
import javanetURL;
import
javanetURLConnection;
import javatextDateFormat;
import
javatextParseException;
import javatextSimpleDateFormat;
import
javautilCalendar;
import javautilDate;
import javautilRandom;
import javaxswingJApplet;
import javaxswingTimer;
import orgjfreechart;
import
orgjfreechartannotationsCategoryTextAnnotation;
import
orgjfreechartaxisCategoryAnchor;
import
orgjfreechartaxisCategoryAxis;
import
orgjfreechartaxisCategoryLabelPositions;
import
orgjfreechartaxisDateAxis;
import
orgjfreechartaxisDateTickUnit;
import
orgjfreechartaxisDateTickUnitType;
import
orgjfreechartaxisValueAxis;
import
orgjfreechartlabelsStandardCategoryItemLabelGenerator;
import
orgjfreechartplotCategoryPlot;
import
orgjfreechartplotPlotOrientation;
import
orgjfreechartplotXYPlot;
import
orgjfreechartrenderercategoryBarRenderer;
import
orgjfreecharttitleTextTitle;
import
orgjfreedatacategoryCategoryDataset;
import
orgjfreedatacategoryIntervalCategoryDataset;
import orgjfreechartaxisNumberAxis;
import
orgjfreedatacategoryDefaultCategoryDataset;
import
orgjfreedataganttTask;
import orgjfreedataganttTaskSeries;
import
orgjfreedataganttTaskSeriesCollection;
import
orgjfreedatatimeDay;
import orgjfreedatatimeSecond;
import
orgjfreedatatimeTimeSeries;
import
orgjfreedatatimeTimeSeriesCollection;
import
orgjfreedataxyXYDataset;
public class shixutu extends JApplet {
//PLOT_FONT是一静态的字体常量对象,使用此对象可以避免反复用到的字体对象被多次创建
private static final Font PLOT_FONT = new Font("黑体", FontITALIC ,
18);
JFreeChart chart;
//创建数据动态更新的监听
class DataGenerator extends Timer
implements ActionListener {
private static final long serialVersionUID =
3977867288743720504L;
String
equID;
//设备ID号
int
totalTask;
//任务数
String[][]
strTask;
//任务情况
public void
actionPerformed(ActionEvent actionevent) {
addTotalObservation();
} DataGenerator()
{
super(1000,
null);
addActionListener(this);
Systemoutprintln("super");
}
}
//将更新的数据添加到chart中
private void addTotalObservation()
{
Systemoutprintln("addTotalObservation");
//设置新的数据集
chartgetXYPlot()setDataset(createDataset());
//通知Jfreechart
数据发生了改变,重新绘制柱状图
if
(chart != null)
{
chartfireChartChanged();
}
}
private static void
processChart(JFreeChart chart)
{
//设置标题字体
chartgetTitle()setFont(new Font("隶书", FontBOLD,
26));
//设置背景色
chartsetBackgroundPaint(new
Color(252,175,134));
XYPlot plot = chartgetXYPlot();
//获取图表的绘制属性
plotsetDomainGridlinesVisible(false);
//设置网格不显示
//获取时间轴对象
DateAxis dateAxis = (DateAxis)
plotgetDomainAxis();
dateAxissetLabelFont(PLOT_FONT);
//设置时间轴字体
//设置时间轴标尺值字体
dateAxissetTickLabelFont(new
Font("宋体",FontPLAIN,12));
dateAxissetLowerMargin(00);
//设置时间轴上显示的最小值
//获取数据轴对象
ValueAxis valueAxis =
plotgetRangeAxis();
valueAxissetLabelFont(PLOT_FONT);
//设置数据字体
DateFormat format = new SimpleDateFormat("mm分ss秒");
//创建日期格式对象
//创建DateTickUnit对象
DateTickUnit dtu = new
DateTickUnit(DateTickUnitTypeSECOND,30,format);
dateAxissetTickUnit(dtu);
//设置日期轴的日期标签 } //将结果输出在文件中
private static
void writeChartAsImage(JFreeChart chart)
{
FileOutputStream fos_jpg =
null;
try
{
fos_jpg = new
FileOutputStream("D:\\test\\shixutujpg");
ChartUtilitieswriteChartAsJPEG(fos_jpg, 1, chart, 400, 300,
null);
} catch (Exception e)
{
eprintStackTrace();
} finally
{
try
{
fos_jpgclose();
} catch (Exception e)
{
}
}
}
//创建数据集合对象
public static XYDataset createDataset()
{
//实例化TimeSeries对象
TimeSeries timeseries = new
TimeSeries("Data");
Second second = new Second();
//实例化Day
double d =
50D;
//添加一年365天的数据
for (int i = 0; i < 500; i++)
{
d = d + (Mathrandom() - 05) 10;
//创建随机数据
timeseriessecond(day, d);
//向数据集合中添加数据
second = (Second)
secondnext();
}
TimeSeriesCollection timeSeriesCollection =
new
TimeSeriesCollection(timeseries);
//返回数据集合对象
return timeSeriesCollection; } //Applet程序初始化
public void init()
{
// 1
得到数据
XYDataset dataset =
createDataset();
// 2
构造chart
chart =
ChartFactorycreateTimeSeriesChart(
"时序图示范", //
图表标题
"时间", //
目录轴的显示标签--横轴
"数值", //
数值轴的显示标签--纵轴
dataset, //
数据集
false,
false, //
是否生成工具
false //
是否生成URL链接
);
// 3
处理chart中文显示问题
processChart(chart);
// 4
chart输出
//writeChartAsImage(chart);
// 5 chart
以swing形式输出
//6使用applet输出
ChartPanel chartPanel = new
ChartPanel(chart);
chartPanelsetPreferredSize(new
javaawtDimension(800,500));
getContentPane()add(chartPanel); (new
DataGenerator())start();
}
public void
paint(Graphics g)
{
if
(chart != null)
{
chartdraw((Graphics2D) g,
getBounds());
}
}
public void destroy() {
}
}
1如图所示,拖动鼠标选中要建立图标的数据。
2点击菜单栏上的:插入--柱形图,选择一种样式。
3在插入的图表上,先点击纵坐标轴选中它,可以看到这个坐标轴四周出现了四个小圆,也叫做控制点。
4右键单击这个坐标轴,然后选择设置坐标轴格式。
5在打开的坐标轴格式对话框中,看到坐标轴的最大值最小值等都是自动的,为了自己设定,必须先选中固定的,然后设定数值,如图所示。
6设置好刻度以后,点击数字选项,然后在类别下选择自定义,在各式代码这一栏输入 g/毫升 ,然后点击添加按钮。这个就是给数据添加一个单位的代码。点击关闭按钮。
7看到纵坐标轴已经添加了单位了。
在图表中的轴线窗口中调整。
1、点击图表,在d出的图表工具栏。
2、点击设计选项卡,点击水平轴。
3、在d出的水平轴窗口中,点击轴线选项卡。
4、在轴线窗口中,调整轴线宽度,调整后的宽度即为水平轴的宽度。
以上就是关于怎么从数据库中调出数据并生成动态图表全部的内容,包括:怎么从数据库中调出数据并生成动态图表、在excel中做图表后,X轴数值怎么调整、图表水平轴显示很窄怎么调整等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)