Я видел интересный способ сделать это в исходном коде JFreeChart. Вы можете нарисовать область над участком диаграммы, и когда вы отпустите кнопку мыши, диаграмма увеличится на выбранном значении. Повторная визуализация графика обходится дорого, и, к сожалению, JFreeChart не поддерживает частичное рисование графика. Таким образом, чтобы нарисовать выделение, они выполняют некоторую побитовую операцию с цветами компонента обратимым образом. Каждый раз, когда мышь перемещается при выборе области, вы отменяете предыдущую побитовую операцию со старыми координатами, а затем возвращаете ее в новые координаты.
Взгляните на ChartPanel.java в JFreeChart
private void drawZoomRectangle(Graphics2D g2) {
// Set XOR mode to draw the zoom rectangle
g2.setXORMode(Color.gray);
if (this.zoomRectangle != null) {
if (this.fillZoomRectangle) {
g2.fill(this.zoomRectangle);
}
else {
g2.draw(this.zoomRectangle);
}
}
// Reset to the default 'overwrite' mode
g2.setPaintMode();
}