使用JFreeChart创建柱状图,用的是CategoryDataset这个数据集生成在ChartPanel上面然后把ChartPanel添加到一个jDialog上面 如果点击左右的话让横坐标上面的值产生变化比如当前是11-40分的那么点击的时候让值变成41-10分的 如图
现在已经在按钮事件上添加过了时间但是不知道怎么使面板重新创建来使横坐标的值产生变化.

解决方案 »

  1.   

    具体源代码如下:
    JFreeChart chart;
        public void setchart(){
            CategoryDataset dataset = getDataSet();
            chart = ChartFactory.createBarChart(
                    "Distribution of data", // 图表标题
                    "Time(M)", // 目录轴的显示标签
                    "Data(MB)", // 数值轴的显示标签
                    dataset, // 数据集
                    PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                    false, // 是否显示图例(对于简单的柱状图必须是false)
                    true, // 是否生成工具
                    false // 是否生成URL链接
                               );        frame = new ChartPanel(chart);
            frame.addChartMouseListener(new barchardeom_ChartMouseListener(this));
            frame.setDisplayToolTips(true);
            frame.setVerticalAxisTrace(true);
            frame.setHorizontalAxisTrace(true);
            frame.updateUI();
            jPanel3.remove(frame);
            jPanel3.add(frame, java.awt.BorderLayout.CENTER);
            jPanel3.updateUI();
        }
        
        private  CategoryDataset getDataSet()
    {
        minute=gettimem();
        System.out.println("       minute   =   "+minute);
       Random random=new Random();
        for (int i = 0; i < 30; i++)
        {
            int ran = 0;
            while (true) //设定一个4位数的随机数
            {
                ran = random.nextInt(9999);
                if (ran > 1000)
                {
                    break;
                }
            }
            data[0][i]=ran;
        }
        String[] rowKeys = {"1"};    for(int i=0;i<columnKeys.length;i++){//设置当前横坐标的值为半小时前到当前时间的分钟
            if (minute == 60)
            {
                minute = 0;
                columnKeys[i] = "0" + minute ;
            }
            if (minute < 10)
            {
                columnKeys[i] = "0" + minute;
            } else
            {
                columnKeys[i] = minute + "";
            }
          minute++;
      }
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
        return dataset;
    }