如何在java代码中使用javafx更改散点图的点颜色?
就像我能做的那样如何在java代码中使用javafx更改散点图的点颜色?,java,javafx,lookup,Java,Javafx,Lookup,就像我能做的那样 Set<Node> nodes = lineChart.lookupAll(".series" + index); for (Node n : nodes) { n.setStyle("...css style code..."); } Set nodes=lineChart.lookupAll(“.series”+索引); 用于(节点n:节点){ n、 setStyle(“…css样式代码…”); } 对于折线图,如何对散点图执行相同操作?下面是节点/
Set<Node> nodes = lineChart.lookupAll(".series" + index);
for (Node n : nodes) {
n.setStyle("...css style code...");
}
Set nodes=lineChart.lookupAll(“.series”+索引);
用于(节点n:节点){
n、 setStyle(“…css样式代码…”);
}
对于折线图,如何对散点图执行相同操作?下面是节点/颜色更改的示例。代码来自
import java.util.Set;
导入javafx.application.application;
导入javafx.scene.Node;
导入javafx.scene.scene;
导入javafx.scene.chart.NumberAxis;
导入javafx.scene.chart.ScatterChart;
导入javafx.scene.chart.XYChart;
导入javafx.stage.stage;
公共类ScatterChartSample扩展了应用程序
{
@凌驾
公众假期开始(阶段)
{
阶段。集合标题(“散点图样本”);
最终数轴xAxis=新数轴(0,10,1);
最终数字轴yAxis=新数字轴(-100500100);
最终散射图sc=新散射图(X轴、Y轴);
xAxis.setLabel(“年龄(年)”;
yAxis.setLabel(“返回日期”);
sc.setTitle(“投资概述”);
XYChart.Series系列1=新的XYChart.Series();
系列1.集合名(“股权”);
series1.getData().add(新的XYChart.Data(4.2193.2));
series1.getData().add(新的XYChart.Data(2.8,33.6));
series1.getData().add(新的XYChart.Data(6.2,24.8));
series1.getData().add(新的XYChart.Data(1,14));
series1.getData().add(新的XYChart.Data(1.2,26.4));
series1.getData().add(新的XYChart.Data(4.4114.4));
series1.getData().add(新的XYChart.Data(8.5323));
series1.getData().add(新的XYChart.Data(6.9289.8));
series1.getData().add(新的XYChart.Data(9.9287.1));
series1.getData().add(新的XYChart.Data(0.9,-9));
series1.getData().add(新的XYChart.Data(3.2150.8));
series1.getData().add(新的XYChart.Data(4.8,20.8));
series1.getData().add(新的XYChart.Data(7.3,-42.3));
series1.getData().add(新的XYChart.Data(1.8,81.4));
series1.getData().add(新的XYChart.Data(7.3110.3));
series1.getData().add(新的XYChart.Data(2.7,41.2));
XYChart.Series系列2=新的XYChart.Series();
系列2.集合名(“共同基金”);
series2.getData().add(新的XYChart.Data(5.2229.2));
series2.getData().add(新的XYChart.Data(2.4,37.6));
series2.getData().add(新的XYChart.Data(3.2,49.8));
series2.getData().add(新的XYChart.Data(1.8134));
series2.getData().add(新的XYChart.Data(3.2236.2));
series2.getData().add(新的XYChart.Data(7.4114.1));
series2.getData().add(新的XYChart.Data(3.5323));
series2.getData().add(新的XYChart.Data(9.3,29.9));
series2.getData().add(新的XYChart.Data(8.1287.4));
sc.getData().addAll(系列1、系列2);
场景=新场景(sc,500400);
舞台场景;
stage.show();
设置节点=sc.lookupAll(“.series”+0);
用于(节点n:节点){
n、 设置样式(“-fx背景色:#860061,白色;\n”
+-fx背景插图:0,2;\n
+“-fx背景半径:5px;\n”
+“-fx填充:5px;”;
}
}
公共静态void main(字符串[]args)
{
发射(args);
}
}
您发布的代码没有问题。我刚做了一个测试,效果很好。去听听你的想法,好的。对于折线图,它是有效的。但是对于ScatterChart,不要这样做。另外,使用
CSS
这样做可能更容易。重现问题后,我发现在XYChart.Series中没有添加XYChart.Data时,该样式不起作用。非常感谢。
import java.util.Set;
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;
public class ScatterChartSample extends Application
{
@Override
public void start(Stage stage)
{
stage.setTitle("Scatter Chart Sample");
final NumberAxis xAxis = new NumberAxis(0, 10, 1);
final NumberAxis yAxis = new NumberAxis(-100, 500, 100);
final ScatterChart<Number, Number> sc = new ScatterChart<Number, Number>(xAxis, yAxis);
xAxis.setLabel("Age (years)");
yAxis.setLabel("Returns to date");
sc.setTitle("Investment Overview");
XYChart.Series series1 = new XYChart.Series();
series1.setName("Equities");
series1.getData().add(new XYChart.Data(4.2, 193.2));
series1.getData().add(new XYChart.Data(2.8, 33.6));
series1.getData().add(new XYChart.Data(6.2, 24.8));
series1.getData().add(new XYChart.Data(1, 14));
series1.getData().add(new XYChart.Data(1.2, 26.4));
series1.getData().add(new XYChart.Data(4.4, 114.4));
series1.getData().add(new XYChart.Data(8.5, 323));
series1.getData().add(new XYChart.Data(6.9, 289.8));
series1.getData().add(new XYChart.Data(9.9, 287.1));
series1.getData().add(new XYChart.Data(0.9, -9));
series1.getData().add(new XYChart.Data(3.2, 150.8));
series1.getData().add(new XYChart.Data(4.8, 20.8));
series1.getData().add(new XYChart.Data(7.3, -42.3));
series1.getData().add(new XYChart.Data(1.8, 81.4));
series1.getData().add(new XYChart.Data(7.3, 110.3));
series1.getData().add(new XYChart.Data(2.7, 41.2));
XYChart.Series series2 = new XYChart.Series();
series2.setName("Mutual funds");
series2.getData().add(new XYChart.Data(5.2, 229.2));
series2.getData().add(new XYChart.Data(2.4, 37.6));
series2.getData().add(new XYChart.Data(3.2, 49.8));
series2.getData().add(new XYChart.Data(1.8, 134));
series2.getData().add(new XYChart.Data(3.2, 236.2));
series2.getData().add(new XYChart.Data(7.4, 114.1));
series2.getData().add(new XYChart.Data(3.5, 323));
series2.getData().add(new XYChart.Data(9.3, 29.9));
series2.getData().add(new XYChart.Data(8.1, 287.4));
sc.getData().addAll(series1, series2);
Scene scene = new Scene(sc, 500, 400);
stage.setScene(scene);
stage.show();
Set<Node> nodes = sc.lookupAll(".series" + 0);
for (Node n : nodes) {
n.setStyle("-fx-background-color: #860061, white;\n"
+ " -fx-background-insets: 0, 2;\n"
+ " -fx-background-radius: 5px;\n"
+ " -fx-padding: 5px;");
}
}
public static void main(String[] args)
{
launch(args);
}
}