環境
- Java SE 8u20
コード一部抜粋
...
TakeXYAction action = new TakeXYAction(chart);
chart.lookup(".chart-plot-background").setOnMouseClicked(action);
...
TakeXYAction.java
final class TakeXYAction implements EventHandler<MouseEvent> {
private final LineChart<Number, Number> chart;
public TakeXYAction(LineChart<Number, Number> _chart) {
this.chart = _chart;
}
@Override
public void handle(MouseEvent event) {
Axis<Number> xAxis = this.chart.getXAxis();
double x = xAxis.getValueForDisplay(event.getX()).doubleValue();
...
}
}
要点
- Chartに対して
setOnMouseClicked(action)
をしない - lookup(".chart-plot-bakground")でとってこれるNode(Region)に対して
setOnMouseClicked(action)
をする - event.getX()をAxis#getValueForDisplayに突っ込んでとる