Java JFreeChart刷新后恢复缩放位置
我有以下方法Java JFreeChart刷新后恢复缩放位置,java,refresh,zooming,jfreechart,Java,Refresh,Zooming,Jfreechart,我有以下方法 private void passStingR(StringBuilder retVal) throws BadLocationException, Exception { int getinitialscrollpos; getinitialscrollpos = getinitialscrollPosition(scrollMEL); //1. get chartPanel Bounds Rectangl
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边界,然后尝试在方法结束时应用它-但是缩放定位只是不断恢复到默认位置,即整个图形。有人能帮忙吗?我想出了这个办法:
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
}
}
}
我算出了这一点:
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
}
}
}
不清楚哪里出了差错;请编辑您的问题,以包含一个显示您当前方法的问题。@trashgood我已更新了我的问题@trashgood我正在浏览指南,但getScaledDataArea()无法工作!我无法使用显示的更新模型的方法重现问题,但只保留视图。是的,我尝试了很多不同的方法,我成功地实现了缩放,但它在图表的中心随机缩放,而不是我在开始时得到的位置…你认为这可能吗?不清楚哪里出了差错;请编辑您的问题,以包含一个显示您当前方法的问题。@trashgood我已更新了我的问题@trashgood我正在浏览指南,但getScaledDataArea()无法工作!我无法使用显示的更新模型的方法重现问题,但只保留视图。是的,我尝试了很多不同的方法,我成功地实现了缩放,但它在图表的中心随机缩放,而不是在开始时得到的位置…你认为可能吗?