图表在jfreechart中没有显示但价值变化?

时间:2014-01-07 07:29:06

标签: java jfreechart swingworker

朋友们,在我的应用程序中,我使用swingworker为服务器计数器生成jfreechart。为此,值在X,Y轴上更改,但图表不显示。我的代码有问题吗?请检查好友..

" x,y" axis它显示浮点值但是hashmap的实际检索值是int 。如果我正在使用,

Plot.getRangeAxis()setStandardTickUnits(NumberAxis.createIntegerTickUnits());

表示,在 Y轴中只显示当前值而不附近值。请朋友解决两个问题。我的图表编码是,

   try
    {

        System.out.println("Graph Occur");

        MySQLClass.GraphLock=false;
        Panel1.removeAll();
        XYDataset Dataset;
        TimeSeries Series = new TimeSeries("Random Data");
        Second sec = new Second();
        ChartPanel CPanel;
        if(Operation_Combo.getSelectedItem().toString().equals("MySQL"))
        {
         if(MySQLClass.Map_MySql.get(""+MainWindow.SelectedNode+"").equals(null))
         {
             Value = 0;
         }
         else
         {
             Value = Integer.parseInt(MySQLClass.Map_MySql.get(""+MainWindow.SelectedNode+""));
         }
         System.out.println(Value);
        }
        if(Operation_Combo.getSelectedItem().toString().equals("SQL Server"))
        {
         if(SqlServerClass.Map_SQLServer.get(""+MainWindow.SelectedNode+"").equals(null))
         {
             Value = 0;
         }
         else
         {
             Value = Integer.parseInt(SqlServerClass.Map_SQLServer.get(""+MainWindow.SelectedNode+""));
         }
         System.out.println(Value);
        }
        String CounterName = MainWindow.SelectedNode.toString();
        Series.add(sec, Value);
        Dataset = new TimeSeriesCollection(Series);
        Chart = ChartFactory.createTimeSeriesChart(CounterName, "Time", "Range", Dataset, true, false, false);
        XYPlot Plot = (XYPlot)Chart.getPlot();
       // Plot.getRangeAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits());

        CPanel = new ChartPanel(Chart);
        Panel1.revalidate();
        Panel1.add(CPanel);
        Panel1.setBackground(Color.white);
        System.out.println("Chart Added");
        Panel1.validate();

        Thread.sleep(MainWindow.Intervel * 1000);
        System.out.println("Sleep="+(MainWindow.Intervel * 1000));
       CPanel.repaint();
        System.gc();
         if(Operation_Combo.getSelectedItem().toString().equals("MySQL"))
        {
        MySQLClass.SQLLock=true;
        new MySQLClass().execute();
        }
        if(Operation_Combo.getSelectedItem().toString().endsWith("SQL Server"))
        {
        SqlServerClass.SQLServerLock=true;
        new SqlServerClass().execute();
        }

    }

结果是,。

enter image description here

提前致谢。

1 个答案:

答案 0 :(得分:1)

您已创建包含单个数据项的数据集。如果将渲染器设置为在每个数据点显示形状,则会在图表中间看到单个项目。没有行,因为您需要至少两个数据点才能连接。

也许您在某个循环中调用此代码并期望看到多个项目......但在这种情况下,您不应每次都创建新数据集和新图表。