I would like to create an application in Java I can use to plot points onto a scatterplot. I'm using the JFreeChart external library for this. I've tried creating a text.box to input the values, however it wont let me use the variable in different methods could someone please help me it'd be greatly appreciated.
package Grava;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.statistics.HistogramDataset;
import org.jfree.chart.fx.ChartViewer;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.data.statistics.HistogramDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import java.io.File;
import java.io.IOException;
public class Main extends graph{
static Stage window;
Stage window1;
Button button;
Button exitButton;
Button button1;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
window = primaryStage;
window.setTitle("Grava");
Image image = new Image("Grava.logo.png");
window.getIcons().add(image);
String arr[] = {"Voltage", "Current", ""};
/*
Integer yVariables[] = {4, 6, 8, 10};
Integer xVariables[] = {1, 2, 3, 4};
Integer deltaY = ((yVariables[(yVariables.length - 1)]) - (yVariables[0]));
Integer deltaX = ((xVariables[(xVariables.length - 1)]) - (xVariables[0]));
Integer gradient = ((deltaY) / (deltaX));
*/
ChoiceBox dropDown = new ChoiceBox(FXCollections.observableArrayList(arr));
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 100));
grid.setVgap(8);
TextField passInput = new TextField();
passInput.setPromptText("password");
GridPane.setConstraints(passInput, 1, 0);
TextField Xbox1 = new TextField();
passInput.setPromptText("password");
GridPane.setConstraints(Xbox1, 5, 0);
TextField Xbox2 = new TextField();
passInput.setPromptText("password");
GridPane.setConstraints(Xbox2, 10, 0);
button = new Button("click me");
GridPane.setConstraints(button, 1, 2);
button.setOnAction(e -> System.out.println(passInput.getText()));
button1 = new Button("click me for graph");
GridPane.setConstraints(button1,100,50);
button1.setOnAction(e->{
GridPane grid1 = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 100));
grid.setVgap(8);
java.awt.Button button = new java.awt.Button("hey click me");
ChartViewer viewer = new ChartViewer(createChart());
window.setScene(new Scene(viewer));
Scene scene = new Scene(grid1, 300, 200);
window.setTitle("VI Characteristics graph");
window.setWidth(600);
window.setHeight(400);
window.show();
});
exitButton = new Button("Exit button");
GridPane.setConstraints(exitButton, 10, 10);
exitButton.setOnAction(e -> closeProgram());
grid.getChildren().addAll(passInput,Xbox1,Xbox2, button,button1, exitButton, dropDown);
Scene scene = new Scene(grid, 300, 200);
ChartViewer viewer = new ChartViewer();
//window.setScene();
window.setScene(scene);
window.show();
}
public static JFreeChart createChart() {
XYSeriesCollection dataset = new XYSeriesCollection();
XYSeries series1 = new XYSeries("Voltage");
series1.add(10, 35);
series1.add(11, 37);
series1.add(12, 41);
series1.add(12, 39);
series1.add(13, 44);
series1.add(14, 51);
series1.add(15, 52);
series1.add(15, 54);
series1.add(16, 57);
series1.add(17, 62);
series1.add(17, 66);
series1.add(18, 70);
dataset.addSeries(series1);
JFreeChart scatterPlot = ChartFactory.createScatterPlot(
"VI Characteristics graph", // Chart title
"Voltage", // X-Axis Label
"Current", // Y-Axis Label
dataset // Dataset for the Chart
);
return scatterPlot;
}
private static void closeProgram(){
System.out.println("File saved");
window.close();
}
}