在我的JavaFX应用程序中,我有一个包含多个XYChart.Series
的LineChart,其节点在悬停时显示包含该值的标签。
图表和Y轴需要具有以下配置,以便范围可以根据所归属的值动态调整:
axaCote.forceZeroInRangeProperty().setValue(false);
axaCote.autoRangingProperty().setValue(true);
areaChart.setAnimated(true);
这是创建悬停标签的类:
class HoveredThresholdNode extends StackPane {
HoveredThresholdNode(int value) {
setPrefSize(15, 15);
final Label label = createDataThresholdLabel(value);
setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
getChildren().setAll(label);
setCursor(Cursor.NONE);
toFront();
toFront();
}
});
setOnMouseExited(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
getChildren().clear();
setCursor(Cursor.CROSSHAIR);
}
});
}
private Label createDataThresholdLabel(int value) {
final Label label = new Label(value + "");
label.setTranslateY(25);
label.getStyleClass().addAll("default-color0", "chart-line-symbol", "chart-series-line");
label.setStyle("-fx-font-size: 20; -fx-font-weight: bold;");
label.setTextFill(Color.FIREBRICK);
label.setMinSize(Label.USE_PREF_SIZE, Label.USE_PREF_SIZE);
return label;
}
}
在我的外层课程中,我有这段代码:
XYChart.Data<String, Number> nod = nod = new XYChart.Data<>(convertLocalDate(auxData,"yyyy-MM-dd","dd-MM-yyyy"), cota);
nod.setNode(new HoveredThresholdNode(cota));
但是,由于此配置,我的标签不可见:
有没有办法翻译绘图区域,保留autoRangingProperty
,以便它们可见?