JFreeChart学习(二)-动态生成图表,并设置图表的字体格式,显示样式

来源:互联网 发布:微商达人软件代理加盟 编辑:程序博客网 时间:2024/05/17 00:59

JFreeChart动态生成图表,并设置图表的字体格式,显示样式

package jfreechart;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.logging.Level;import java.util.logging.Logger;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.axis.ValueAxis;import org.jfree.chart.plot.XYPlot;import org.jfree.chart.renderer.xy.XYItemRenderer;import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;import org.jfree.chart.title.TextTitle;import org.jfree.data.time.Day;import org.jfree.data.time.Hour;import org.jfree.data.time.Minute;import org.jfree.data.time.TimeSeries;import org.jfree.data.time.TimeSeriesCollection;/** * * @author {userName} * @version 1.0, 2016-12-13 * @since 1.0 */public class TimeDynamicSeries extends JPanel {    private TimeSeries appleSeries;    private TimeSeries orangeSeries;    public TimeDynamicSeries() {        super(new BorderLayout());        appleSeries = new TimeSeries("苹果");        orangeSeries = new TimeSeries("桔子");        TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();        timeseriescollection.addSeries(appleSeries);        timeseriescollection.addSeries(orangeSeries);        JFreeChart timeSeriesChart = ChartFactory.createTimeSeriesChart(                "时序图动态测试", "时间", "数量", timeseriescollection, true,                true, false);        configFont(timeSeriesChart);        setXYPlot(timeSeriesChart);        ChartPanel chartpanel = new ChartPanel(timeSeriesChart, true);        add(chartpanel);        createThread();//先生成图表,再往里面加数据    }    /**     * 设置图表中的字体样式     * @param timeSeriesChart      */    private void configFont(JFreeChart timeSeriesChart) {        Font xfont = new Font("宋体", Font.PLAIN, 12);// X轴          Font yfont = new Font("宋体", Font.PLAIN, 12);// Y轴          Font kfont = new Font("黑体", Font.PLAIN, 12);// 底部          Font titleFont = new Font("微软雅黑", Font.BOLD, 15); // 图片标题         XYPlot plot = timeSeriesChart.getXYPlot();// 图形的绘制结构对象        // 横轴标题字体          plot.getDomainAxis().setLabelFont(xfont);        // 设置横轴标尺值中的字体          plot.getDomainAxis().setTickLabelFont(kfont);        //横轴标注中的字体        timeSeriesChart.getLegend().setItemFont(kfont);        // Y 轴          ValueAxis rangeAxis = plot.getRangeAxis();        //纵轴标题字体        rangeAxis.setLabelFont(yfont);        //纵轴字体颜色        rangeAxis.setLabelPaint(Color.BLUE);        //纵轴标尺中的字体        rangeAxis.setTickLabelFont(yfont);        // 图片标题          timeSeriesChart.setTitle(new TextTitle(timeSeriesChart.getTitle().getText(), titleFont));    }    public static void main(String[] args) {        JFrame jframe = new JFrame("时序图动态测试");        TimeDynamicSeries demo = new TimeDynamicSeries();        jframe.getContentPane().add(demo, "Center");        jframe.pack();        jframe.setVisible(true);        jframe.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent windowevent) {                System.exit(0);            }        });    }    private void createThread() {        CodeThread codeThread = new CodeThread();        Thread t = new Thread(codeThread);        t.start();    }    /**     * 设置图表中的曲线等     * @param timeSeriesChart      */    private void setXYPlot(JFreeChart timeSeriesChart) {        XYPlot plot = timeSeriesChart.getXYPlot();// 图形的绘制结构对象        plot.setDomainGridlinePaint(Color.lightGray);        plot.setRangeGridlinePaint(Color.YELLOW);        XYItemRenderer r = plot.getRenderer();        if (r instanceof XYLineAndShapeRenderer) {            XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;            renderer.setBaseShapesVisible(true);//让每个点的图标可见            renderer.setBaseShapesFilled(false);//每个点为空心        }    }    /**            * 动态生成数据            */    public class CodeThread implements Runnable {        @Override        public void run() {            try {                for (int i = 1; i < 60; i++) {                    Day day = new Day(21, 9, 2008);                    Hour hour22 = new Hour(22, day);                    Hour hour23 = new Hour(23, day);                    appleSeries.add(new Minute(i, hour22), 1.1);                    Thread.sleep(1000);                    appleSeries.add(new Minute(i + 1, hour22), 1.2);                    Thread.sleep(1000);                    appleSeries.add(new Minute(i + 2, hour22), 1.3);                    Thread.sleep(1000);                    orangeSeries.add(new Minute(i + 3, hour23), 1.4);                    Thread.sleep(1000);                    orangeSeries.add(new Minute(i + 4, hour23), 1.5);                    Thread.sleep(1000);                    orangeSeries.add(new Minute(i + 5, hour23), 1.6);                    i = i + 6;                }            } catch (InterruptedException ex) {                Logger.getLogger(TimeDynamicSeries.class.getName()).log(Level.SEVERE, null, ex);            }        }    }}




0 0
原创粉丝点击