实现效果
左移拖拽减小,右移拖拽增大
拖拽前
拖拽后
代码展示
lc.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
//只在折线图范围内点击有效
if(event.getX()>10 && event.getX()<lc.widthProperty().get()-25 && event.getY()>5 && event.getY()<lc.heightProperty().get()-20){
NumberAxis xAxis = (NumberAxis)lc.getXAxis();
double scale = xAxis.getUpperBound() - xAxis.getLowerBound();
double lowerBound1 = xAxis.getLowerBound();
if(lowerBound1+(event.getX()-getPosition())/scale<=0){
return;
}
xAxis.setLowerBound(lowerBound1+Math.round((event.getX()-getPosition())/scale));
xAxis.setUpperBound(scale+lowerBound1+Math.round((event.getX()-getPosition())/scale));
MyGetLineChartUtils.xAxisLabelFormat(xAxis,2,6);
}
}
});
Tips:
在设置坐标轴范围时一定要Math.round取整呀,不然会抖动很严重