Как я могу прослушать событие сброса масштабирования JFreeChart?
Прослушивание события сброса масштабирования в JFreeChart
Ответы (2)
Я сделал это, используя это:
ChartPanel DCP=new ChartPanel(DailyChart){
@Override
public void restoreAutoBounds(){
super.restoreAutoDomainBounds();
super.restoreAutoRangeBounds();
XYPlot plot=(XYPlot)getChart().getPlot();
Calendar Cal=Calendar.getInstance();
String dayName=Cal.getDisplayName(Calendar.DAY_OF_WEEK,Calendar.SHORT,new Locale("en", "us")).toLowerCase();
String tmp[]=((String)Configurations.getWeeklyWorkingSchedule().get(dayName).get("start")).split(":");
Cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(tmp[0]));
Cal.set(Calendar.MINUTE, Integer.parseInt(tmp[1]));
Cal.set(Calendar.SECOND, 0);
long start=Cal.getTimeInMillis();
tmp=((String)Configurations.getWeeklyWorkingSchedule().get(dayName).get("end")).split(":");
Cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(tmp[0]));
Cal.set(Calendar.MINUTE, Integer.parseInt(tmp[1]));
Cal.set(Calendar.SECOND, 0);
long end=Cal.getTimeInMillis();
plot.getDomainAxis().setAutoRange(false);
plot.getDomainAxis().setRange(start,end);
}
};
DCP.restoreAutoBounds();
Спасибо вам всем.
person
Ariyan
schedule
03.01.2012
Спасибо ... @trashgod :)
- person Matthieu; 13.05.2016
Я просто дополню предложение @trashgod, если вы хотите отключить сброс масштабирования на определенной оси: создайте переопределенный ChartPanel
, где вы либо «нуль», либо restoreAutoDomainBounds()
, либо restoreAutoRangeBounds()
, как показано ниже.
Это может быть полезно, когда вы управляете областью просмотра из компонентов, отличных от самой диаграммы (в моем случае: ось X задается программой, но пользователь может свободно увеличивать/уменьшать ось Y).
ChartPanel cp = new ChartPanel(null) {
@Override public void restoreAutoDomainBounds() {
// Empty body: do not reset X zoom
}
};
person
Matthieu
schedule
13.05.2016
restoreAutoBounds()
? - person trashgod   schedule 03.01.2012