I created a fxml layout using the builder v2.0 script. I am changing the diagram in the ie controller file, SampleController.java. I was able to set the name of the chart using the .setTitle method. I need to set the range of xAxis (Start, End, Ticks) and yAxis dynamically. CSS is easy to set using the lowerBound and upperBound properties. But this is a permanent solution. Please provide your valuable suggestions and solutions.
Main.java:
package application; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.control.SplitPane; import javafx.stage.Stage; public class Main extends Application{ @Override public void start(Stage primaryStage) { try { SplitPane root = (SplitPane)FXMLLoader.load(getClass().getResource("Sample.fxml")); Scene scene = new Scene(root,800,400); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }
Sample.fxml
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.*?> <?import java.lang.*?> <?import javafx.scene.chart.*?> <?import javafx.scene.layout.*?> <?import javafx.scene.layout.BorderPane?> <SplitPane dividerPositions="0.7892976588628763" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="400.0" minWidth="800.0" prefHeight="400.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SampleController"> <items> <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0"> <children> <LineChart fx:id="Ch" alternativeColumnFillVisible="true" layoutX="14.0" prefHeight="398.0" prefWidth="500.0"> <xAxis> <NumberAxis side="BOTTOM" /> </xAxis> <yAxis> <NumberAxis layoutX="10.0" side="LEFT" /> </yAxis> </LineChart> </children></AnchorPane> <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0"> <children> <Button fx:id="sine" layoutX="21.0" layoutY="101.0" mnemonicParsing="false" text="Sinusoidal" /> <Button fx:id="triangle" layoutX="21.0" layoutY="148.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="70.0" text="Triangle" /> <Button fx:id="square" layoutX="21.0" layoutY="187.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="70.0" text="Square" /> <Label layoutX="20.0" layoutY="40.0" prefHeight="17.0" prefWidth="83.0" text="Controls" /> </children></AnchorPane> </items> </SplitPane>
SampleController.java
package application; import java.net.URL; import java.util.ResourceBundle; import javafx.animation.Animation; import javafx.animation.KeyFrame; import javafx.animation.Timeline; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.chart.Axis; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; import javafx.scene.chart.XYChart.Series; import javafx.scene.control.Button; import javafx.util.Duration; public class SampleController implements Initializable { final NumberAxis xAxis = new NumberAxis(0,24,3); final NumberAxis yAxis = new NumberAxis(0,1,0.1); @FXML
source share