javafx折线图LineChart

博客涉及JavaFX和CSS相关代码内容,提到圈作为节点可设置提示框,可参考Tooltip。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

在这里插入图片描述

代码

public class TestLineChart extends Application {
 
    private LineChart chart;
    private NumberAxis xAxis;
    private NumberAxis yAxis;

    public static double normalDistribution(double x, double u,double seta) {
        return 1.0/(Math.sqrt(2.0*Math.PI)*seta)*Math.exp(
        		-0.5*Math.pow((x-u)/seta, 2));		
    }
    public XYChart.Series<Double,Double> createSeries(){
    	Series series = new LineChart.Series<>();
    	series.setName("X-Y(0,1)");
    	for(double i=-4;i<=4;i+=0.1) {
    		series.getData().add(new Data(i,normalDistribution(i,0,1)));
    	}
		return series;
    }
    public Parent createContent() {
        xAxis = new NumberAxis();
        xAxis.setLabel("X-Axis");
        yAxis = new NumberAxis();
        yAxis.setLabel("Y-Axis");
        
        chart = new LineChart(xAxis, yAxis);
        chart.setId("linechart");

        chart.getData().add(createSeries());
        chart.setTitle("折线图");
        final String liveScatterChartCss =
                getClass().getResource("LineChartUtility.css").toExternalForm();
        chart.getStylesheets().add(liveScatterChartCss);
        chart.setCreateSymbols(false);
        return chart;
    }
 
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setScene(new Scene(createContent()));
        primaryStage.show();
    }
    public static void main(String[] args) { launch(args);}
}

CSS

线的颜色
.default-color0.chart-series-line {
	-fx-stroke:#55ddff
}
圈的颜色,圈的填充色
.chart-line-symbol.default-color0{
	-fx-background-color: blue,red;
}
是否隐藏圈节点
.default-color0.chart-line-symbol { -fx-background-color: transparent; }

当然圈作为一个节点,当然是可以设置提示框的,请见Tooltip。
在这里插入图片描述

### 设置 JavaFX LineChart 颜色的方法 在 JavaFX 中,`LineChart` 是一种常用的可视化组件。为了自定义 `LineChart` 的颜色,可以采用多种方法来实现。 #### 方法一:通过 CSS 自定义样式 JavaFX 支持使用 CSS 来定制化图表的外观。对于特定系列的颜色修改,可以在应用程序中引入外部 CSS 文件并应用相应的选择器: ```css /* 定义第7个数据序列的颜色 */ .default-color0.chart-series-line { -fx-stroke: red; /* 修改线条颜色 */ } .default-symbol0.chart-line-symbol { -fx-background-color: red, white; } ``` 上述代码片段展示了如何针对第一个默认颜色(即 `-default-color0-` 对应于第七个系列)设置新的笔触颜色以及标记符号填充颜色[^1]。 如果希望影响更多属性或不同索引位置的数据集,则需相应调整类名中的编号部分。 #### 方法二:程序内动态设定 除了利用 CSS 外部文件外,还可以直接在 Java 代码里操作节点对象来进行更灵活的变化处理。下面给出一段示例代码用于改变指定序号下的线型图样式的颜色: ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart.Series; import javafx.stage.Stage; public class CustomizedLineColor extends Application { @Override public void start(Stage primaryStage) throws Exception{ NumberAxis xAxis = new NumberAxis(); NumberAxis yAxis = new NumberAxis(); // 创建折线图实例 final LineChart<Number, Number> lineChart = new LineChart<>(xAxis,yAxis); Series<Number, Number> series7 = new XYChart.Series<>(); // 添加一些测试数据点至series7... // 将此系列加入到linechart当中去 lineChart.getData().add(series7); // 获取该系列对应的路径(Path),并为其分配新画刷 ((Series<?, ?>)lineChart.lookup(".series" + (series7.getIndex()-1))).getNode().setStyle("-fx-stroke:red;"); Scene scene = new Scene(lineChart , 800 , 600 ); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args){ launch(args); } } ``` 这段代码演示了怎样获取某个具体系列所关联的 UI 组件,并对其施加个性化的风格变化。注意这里使用的 `.lookup()` 函数依赖于内部实现细节,因此可能不够稳定;推荐尽可能优先考虑基于 CSS 的解决方案[^2]。 #### 方法三:覆盖默认主题 由于 JavaFX 使用名为 "Modena" 的内置样式表作为其标准视觉表现的基础框架,所以也可以尝试重写这些全局规则以达到统一的效果。这通常涉及到替换整个项目的资源包或是仅局部地重新定义某些关键的选择符及其属性值[^3]。 例如,在项目启动前加载自定义的主题文件即可完成此类任务: ```xml <?xml version="1.0" encoding="UTF-8"?> <!-- my-theme.css --> .stylesheet { "-fx-base": #ffcccb; /* 更改整体底色 */ ".default-color0.chart-series-line": { "-fx-stroke": blueviolet; }; } ``` 之后只需确保这个额外的样式表被正确附加到了舞台或者场景之中即可生效。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值