我有一个JavaFX应用程序,它首先计算一些数据,然后在LineChart上添加datapoints。我想在节点上添加一个ClickListener,如果用户单击图上的任何节点,相应的值将出现在TableView或其他东西中。但我无法检索节点的值。
代码如下:
lineChart.getData().add(series);
series.getNode().setOnMouseClicked(nodeClicked);
EventListener的代码:
EventHandler<MouseEvent> nodeClicked = new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
System.out.println("clicked");
}
};
我还尝试在LineChart上设置监听器,但在事件-对象中找不到相应的节点信息,如value等。
看起来您正在将处理程序添加到与数据系列关联的节点。折线图中的这个节点就是这条线本身,所以当您单击这条线时,您应该会看到控制台的输出。
要让侦听器响应对数据点本身的单击,您需要将侦听器添加到与各个Xychart.data
实例关联的节点中。
注意,这些节点只在数据添加到序列中并且序列添加到图表中之后才创建;因此,必须注意只在这些事件发生后添加事件处理程序。
下面是一个SSCCE:
import java.util.Random;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart.Data;
import javafx.scene.chart.XYChart.Series;
import javafx.stage.Stage;
public class LineChartWithEventHandlers extends Application {
@Override
public void start(Stage primaryStage) {
LineChart<Number, Number> chart = new LineChart<>(new NumberAxis(), new NumberAxis());
Series<Number, Number> series = new Series<>();
series.setName("Data");
chart.getData().add(series);
// handler for clicking on line:
series.getNode().setOnMouseClicked(e -> System.out.println("Click on series"));
Random rng = new Random();
for (int x = 0 ; x <= 20 ; x++) {
Data<Number, Number> data = new Data<>(x, rng.nextInt(100));
series.getData().add(data);
// handler for clicking on data point:
data.getNode().setOnMouseClicked(e ->
System.out.printf("Click on data [%d, %d]%n", data.getXValue(), data.getYValue()));
}
Scene scene = new Scene(chart);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
屏幕截图后点击线,两个不同的数据点,并再次线:
我已经用FXML创建了一个布局,它由一个带有sideMenu的BorderPane和一个用于其他内容的innerBorderPane组成... 但是,由于我刚刚开始使用JavaFX中的FXML,所以我只需要知道如何做下一件事... custom.FXML(这是主要的FXML布局) sideMenu.FXML(这是sideMenu FXML布局) java(这是sideMenu JavaFX控制器)
所以我要做的是,我要编写一个GUI来在LineChart上显示实时数据。到目前为止,我可以让linechart工作,但不能进入GUI。 使用scenebuilder,我制作了一个带有linechart对象的视图,以便将其链接到我生成的图表。但由于某些原因,这似乎不能与我的MainApp中的代码一起工作。 这只显示了带有空线程的视图。我知道图表应该知道然而,因为我可以使用它来创建一个场景,并显示到G
问题内容: 我尝试在Google Container Engine的群集节点上安装ElasticSearch(最新版本),但是ElasticSearch需要变量:>> 262144。 如果我ssh到每个节点并手动运行: 一切正常,但是任何新节点将没有指定的配置。 所以我的问题是: 有没有办法在引导时在每个节点上加载系统配置?Deamon Set并不是一个好的解决方案,因为在Docker容器中,系统
私有静态无效printChartAnalysis(analysisResults r){
我试图用一些随机信息创建一个简单的LineChart,但当我试图通过SceneBuilder使用fxml文件创建时,图表显示了但从未填充。每当我手动创建vbox、linechart和scene时,一切工作都很好。我真的很困惑,在使用fxml文件时,图表代码应该去哪里。
在JavaFx中,我有一个LineChart, 它显示得很好,但似乎可以对所有数据点进行采样,以便将整个域放入图表中。 是否有一种方法可以强制LineChart只显示系列的最后10个数据点? 最后,我想创建一种方法来平移图表内容,以便显示一个窗口的数据,作为平移位置的函数。 我找到了这个SO post但是它删除了数据,这意味着我需要将它添加回来。我宁愿在可能的情况下将所有数据保留在系列中,并在可能