刷新后JFreeChart恢复缩放位置

时间:2016-05-03 19:47:28

标签: java refresh zoom jfreechart

我有以下方法

      private void passStingR(StringBuilder retVal) throws BadLocationException, Exception {
        int getinitialscrollpos;
        getinitialscrollpos = getinitialscrollPosition(scrollMEL);


    //1. get chartPanel Bounds 
        Rectangle2D xy  = chartPanel.getScreenDataArea();

            Rectangle bounds = chartPanel.getBounds();
            int horz = (int) bounds.getX();//need to get the correct x and y
            int vertz = (int) bounds.getY();
            int width1 = (int) bounds.getWidth();
            int height1 = (int) bounds.getHeight();
            System.out.println(horz + " " + vertz + " " + width1 + " " +height1);//get positioning data
   /////////////////////////////////     


        Document docR = null;

        docR = loadXMLFromString(retVal.toString());//pull in the XML data into a new doc
        populate1R(docR);
        tableMEL.getTableHeader().setReorderingAllowed(false);//prevent user from changing column order now at refresh level
        SimpleDateFormat time_formatterR = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String current_time_strR = time_formatterR.format(System.currentTimeMillis());
        updatetFieldDG.setText(current_time_strR);
        middlePanel.add(scrollMEL);
        scrollMEL.getVerticalScrollBar().setValue(getinitialscrollpos);
        System.out.println("End" + getinitialscrollpos);
        getTableData(tableMEL);
        head(tableMEL);
        createGraphGUI();

    //2.the problem lies here as i would expect the chartPanel.setBounds to restore the position that i got at 1.

        chartPanel.setBounds(horz,vertz,width1,height1);//xywidthheight
            System.out.println(chartPanel.getBounds());//set the positioning items as per the start 
////////////


        }

问题在于刷新我的数据时会丢失缩放定位。

因此我尝试在方法的开头获取chartPanel边界,然后尝试在方法结束时应用它 - 但是缩放定位只是保持恢复到默认位置,这只是整个图形。请有人帮忙吗?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题:

private void passStingR(StringBuilder retVal) throws BadLocationException, Exception {
    int getinitialscrollpos;
    getinitialscrollpos = getinitialscrollPosition(scrollMEL);
    try {
        CategoryPlot plot = (CategoryPlot) chartPanel.getChart().getPlot();//get plot of graph
        //System.out.print("Plot Type" + plot);
        ValueAxis rangeAxis = plot.getRangeAxis();//get range of axis of graph
        System.out.print("Range " + rangeAxis);//get range lower and upper as an array
        map.put(1, rangeAxis);
    } catch (Exception e) {
        System.out.print("Error has occured");
    } finally {
    ////refresh data////
        Document docR = null;
        docR = loadXMLFromString(retVal.toString());//pull in the XML data into a new doc
        populate1R(docR);
        tableMEL.getTableHeader().setReorderingAllowed(false);//prevent user from changing column order now at refresh level
        SimpleDateFormat time_formatterR = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String current_time_strR = time_formatterR.format(System.currentTimeMillis());
        updatetFieldDG.setText(current_time_strR);
        middlePanel.add(scrollMEL);
        scrollMEL.getVerticalScrollBar().setValue(getinitialscrollpos);
        System.out.println("End" + getinitialscrollpos);
        getTableData(tableMEL);
        head(tableMEL);
        createGraphGUI();
        if (map.get(1) != null) {
            System.out.print("get map" + map.get(1));
            CategoryPlot plot = (CategoryPlot) chartPanel.getChart().getPlot();
            plot.setRangeAxis(map.get(1));//get range of axis of graph
        }
    }
}