如何在JavaFX中转换折线图的绘图区域以使悬停标签变得可见?

时间:2016-06-21 16:52:54

标签: javafx linechart

在我的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));

但是,由于此配置,我的标签不可见:

enter image description here

有没有办法翻译绘图区域,保留autoRangingProperty,以便它们可见?

0 个答案:

没有答案