我是个JAVA初学者,请教各位用GUI建立直角坐标系的实时数据采集,画出曲线图怎么做?最好能有原代码,.cn谢谢大家

解决方案 »

  1.   

    import java.awt.BasicStroke;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.Timer;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.DateAxis;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.renderer.xy.XYItemRenderer;
    import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
    import org.jfree.data.time.Millisecond;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.ui.RectangleInsets;public class MemoryUsageDemo extends JPanel
    {
    private TimeSeries total; private TimeSeries free; public MemoryUsageDemo(int historyCount)
    {
    super(new BorderLayout());
    this.total = new TimeSeries("Total Memory", Millisecond.class);
    this.free = new TimeSeries("Free Memory", Millisecond.class);
    this.total.setMaximumItemAge(30000);
    this.free.setMaximumItemAge(30000);
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(total);
    dataset.addSeries(free);
    DateAxis domain = new DateAxis("Time");
    NumberAxis range = new NumberAxis("Memory");
    domain.setTickLabelFont(new Font("SansSerif", Font.PLAIN, 12));
    range.setTickLabelFont(new Font("SansSerif", Font.PLAIN, 12));
    domain.setLabelFont(new Font("SensSerif", Font.PLAIN, 14));
    range.setLabelFont(new Font("SansSerif", Font.PLAIN, 14));
    XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false);
    renderer.setSeriesPaint(0, Color.red);
    renderer.setSeriesPaint(1, Color.green);
    renderer.setStroke(new BasicStroke(3f, BasicStroke.CAP_BUTT,
    BasicStroke.JOIN_BEVEL));
    XYPlot plot = new XYPlot(dataset, domain, range, renderer);
    plot.setBackgroundPaint(Color.lightGray);
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);
    plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
    domain.setAutoRange(true);
    domain.setLowerMargin(0.0);
    domain.setUpperMargin(0.0);
    domain.setTickLabelsVisible(true);
    range.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    JFreeChart chart = new JFreeChart("JVM Memory Usage", new Font(
    "SansSerif", Font.BOLD, 24), plot, true);
    chart.setBackgroundPaint(Color.white);
    ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory
    .createEmptyBorder(4, 4, 4, 4), BorderFactory
    .createLineBorder(Color.black)));
    add(chartPanel);
    }
    private void addTotalObservation(double y)
    {
    this.total.add(new Millisecond(),y);
    }
    private void addFreeObservation(double y)
    {
    this.free.add(new Millisecond(),y);
    }
    class DataGenerator extends Timer implements ActionListener
    {
    DataGenerator(int interval)
    {
    super(interval,null);
    addActionListener(this);
    }
    public void actionPerformed(ActionEvent event)
    {
    long f=Runtime.getRuntime().freeMemory();
    long t=Runtime.getRuntime().totalMemory();
    addTotalObservation(t);
    addFreeObservation(f);
    }
    }
    public static void main(String[] args)
    {
    JFrame frame=new JFrame("Memory Usage Demo");
    MemoryUsageDemo panel=new MemoryUsageDemo(30000);
    frame.getContentPane().add(panel,BorderLayout.CENTER);
    frame.setBounds(200,120,600,280);
    frame.setVisible(true);
    panel.new DataGenerator(100).start();
    frame.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    }
    }类中的org.jfree包中的类需要到down 一个jfree的jiar包添加到classpath中,然后运行。
      

  2.   

    地址在这里http://www.jfree.org/jfreechart/
    上面的类是实时监视CPU的使用情况