You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除JavaFX AreaChart的所有边框轴线及底部白线?

JavaFX AreaChart移除底部白线,仅保留图表线条

我正尝试使用JavaFX实现完全无样式的AreaChart,仅保留图表线条。目前已通过代码和CSS完成大部分设置,但图表底部仍有一条烦人的白线,请问该如何移除?

Java代码示例

int maxDataPoints = 200;

NumberAxis xAxis = new NumberAxis(0, maxDataPoints, 10);
xAxis.setForceZeroInRange(false);
xAxis.setAutoRanging(false);
xAxis.setTickLabelsVisible(false);
xAxis.setTickMarkVisible(false);
xAxis.setMinorTickVisible(false);
xAxis.setVisible(false);

NumberAxis yAxis = new NumberAxis(0, 1, 0.1);
yAxis.setTickLabelsVisible(false);
yAxis.setTickMarkVisible(false);
yAxis.setMinorTickVisible(false);
yAxis.setVisible(false);

AreaChart<Number, Number> areaChartAlt = new AreaChart<>(xAxis, yAxis);

areaChartAlt.minHeightProperty().bind(stackPane.heightProperty());

areaChartAlt.setCreateSymbols(false);

areaChartAlt.getXAxis().setVisible(false);
areaChartAlt.getYAxis().setVisible(false);

areaChartAlt.setLegendVisible(false);

stackPane.getChildren().add(areaChartAlt);
StackPane.setAlignment(areaChartAlt, Pos.CENTER);

XYChart.Series<Number, Number> series = new XYChart.Series<>();
for (int i = 0; i < maxDataPoints; i++)
{
    series.getData().add(new XYChart.Data<>(i, 0));
}

ThreadUtils.run(() -> {
    int counter = maxDataPoints;
    while (true)
    {
        ThreadUtils.safeSleep(samplePeriodMs);
        float value = (float) (counter % 100) * 0.01f;
        int finalCounter = counter;
        Platform.runLater(() -> {
            var data = series.getData().remove(0);
            series.getData().add(new XYChart.Data<>(finalCounter, value));
            xAxis.setLowerBound(data.getXValue().intValue() + 1);
            xAxis.setUpperBound(finalCounter + 1);
        });
        counter++;
    }
});

areaChartAlt.getData().add(series);

stackPane.setPadding(Insets.EMPTY);

borderPane.setCenter(stackPane);
BorderPane.setAlignment(stackPane, Pos.CENTER);

CSS代码示例(初始版本)

.chart {
    -fx-padding: 0px;
    -fx-background-color: transparent;
    -fx-legend-visible: false;
    -fx-border-color: transparent;
    -fx-grid-lines-visible: false;
    -fx-horizontal-grid-lines-visible: false;
    -fx-vertical-grid-lines-visible: false;
    -fx-minor-tick-visible: false;
}

.chart-content {
    -fx-padding: 0px;
    -fx-background-color: transparent;
    -fx-border-color: transparent;
    -fx-border-width: 0px;
}

.chart-plot-background {
    -fx-background-color: transparent;
}

.axis {
    -fx-side: null;
}

解决方法

在.chart选择器中添加-fx-border-width: 0;样式,即可移除底部的白线。修改后的完整.chart选择器如下:

.chart {
    -fx-padding: 0px;
    -fx-background-color: transparent;
    -fx-legend-visible: false;
    -fx-border-color: transparent;
    -fx-border-width: 0;
    -fx-grid-lines-visible: false;
    -fx-horizontal-grid-lines-visible: false;
    -fx-vertical-grid-lines-visible: false;
    -fx-minor-tick-visible: false;
}

验证结果

添加上述样式后,底部的白线已成功移除,AreaChart仅保留了图表线条,实现了完全无样式的需求。

内容的提问来源于stack exchange,提问作者ptan9o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 14:03:16