0
GUI에 문제가 있습니다. Arduino 마이크로 컨트롤러에 저장된 일부 아날로그 값을 표시하는 Gui를 만들려고합니다. 배열에 원하는 모든 데이터를 저장할 수 있습니다. 이제 SceneBuilder 및 JavaFx를 사용하여이 아날로그 신호의 배열을 플롯하고 실제 신호를 확인하지만 그래프는 자동 확대 및 산란입니다. 다음과 같은 것을 더 갖고 싶습니다 : JAVAFX의 Advanced Stock Line Chart 예제 JavaFX Example실시간 라인 차트 JavaFx
여기 내 코드입니다. updateGraph1 (...) 함수는 그래프를 업데이트 할 수있는 값을받을 때마다 호출됩니다.
package de.zft.degreen.view;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.Set;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ValueAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class Gui extends Application implements Runnable, Initializable {
@FXML
private static LineChart<Number,Number> graph1;
public static XYChart.Series<Number, Number> series;
private ChangeListener changeListener;
private static Scene scene;
public Gui() {
series = new XYChart.Series<>();
series.setName("bye");
}
public ChangeListener getChangeListener() {
return changeListener;
}
public void setChangeListener(ChangeListener changeListener) {
this.changeListener = changeListener;
}
@Override
public void start(Stage primaryStage) throws Exception {
System.out.println("Start start");
primaryStage.setTitle("DEGREEN GUI");
System.out.println("Before");
Pane myPane = FXMLLoader.load(getClass().getResource("Gui2.fxml"));
System.out.println("After");
System.out.println("Step1");
scene = new Scene(myPane);
System.out.println("Step2");
primaryStage.setScene(scene);
System.out.println("Step3");
primaryStage.show();
System.out.println("End start");
}
private void init(Stage primaryStage){
System.out.println("Start Init");
}
@FXML
public void updateGraph1(Long long1, int v){
System.out.println("Start updateGraph1"+series.getName());
final int q = v;
final long long2 = long1;
Platform.runLater(new Runnable() {
@Override
public void run() {
add2Series(long2,q,100);
}
});
System.out.println("End updateGraph1");
}
@Override
public void run() {
System.out.println("Gui Initialized");
launch();
System.out.println("Gui Ended");
}
@FXML
public void initialize(URL arg0, ResourceBundle arg1) {
System.out.println("Start Initialize"+series.getName());
series = new XYChart.Series<Number,Number>();
series.setName("Voltage DE1");
graph1.getData().add(series);
graph1.setAnimated(false);
System.out.println("End Initialize"+series.getName());
}
@FXML
protected static void add2Series(Number x, Number y, int displayedSize) {
int seriesSize = series.getData().size();
if (seriesSize >= displayedSize) {
series.getData().remove(0);
}
series.getData().add(new XYChart.Data<Number,Number>(x,y));
}
}
누군가 나를 도울 수 있습니까?