Cześć,
Jestem początkujący w języku Java. Staram się korzystać z JavaFX, bardzo podoba mi się idea oddzielenia kodu od wyglądu (pliki FXML). Jednak jest mało przykładów z wykorzystaniem tego podejścia. Proszę o pomoc i wyjaśnienie czemu wykres f(x) po naciśnieciu przycisku się nie wypełnia...
FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.chart.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="412.0" prefWidth="779.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="javafxapplication5.FXMLDocumentController">
<children>
<Button fx:id="button" layoutX="216.0" layoutY="361.0" onAction="#handleButtonAction" prefHeight="25.0" prefWidth="69.0" text="Rysuj" />
<LineChart fx:id="chart1" layoutX="299.0" layoutY="18.0" prefHeight="194.0" prefWidth="466.0" title="f(x)">
<xAxis>
<CategoryAxis side="BOTTOM" fx:id="x" />
</xAxis>
<yAxis>
<NumberAxis fx:id="y" side="LEFT" />
</yAxis>
</LineChart>
<LineChart fx:id="chart2" layoutX="299.0" layoutY="212.0" prefHeight="194.0" prefWidth="466.0" title="pochodna f(x)">
<xAxis>
<CategoryAxis side="BOTTOM" />
</xAxis>
<yAxis>
<NumberAxis side="LEFT" />
</yAxis>
</LineChart>
<Separator layoutX="299.0" layoutY="29.0" orientation="VERTICAL" prefHeight="357.0" prefWidth="5.0" />
<Label layoutX="25.0" layoutY="29.0" prefHeight="17.0" prefWidth="253.0" text="f(x) = A4x4 + A3x3 + A2x2 + A1x1 + A0" />
<Label layoutX="25.0" layoutY="71.0" text="A4" />
<TextField fx:id="a4" layoutX="52.0" layoutY="67.0" prefHeight="25.0" prefWidth="48.0" />
<TextField fx:id="a3" layoutX="52.0" layoutY="99.0" prefHeight="25.0" prefWidth="48.0" />
<Label layoutX="25.0" layoutY="103.0" text="A3" />
<TextField fx:id="a2" layoutX="52.0" layoutY="132.0" prefHeight="25.0" prefWidth="48.0" />
<Label layoutX="25.0" layoutY="136.0" text="A2" />
<TextField fx:id="a1" layoutX="52.0" layoutY="165.0" prefHeight="25.0" prefWidth="48.0" />
<Label layoutX="25.0" layoutY="169.0" text="A1" />
<TextField fx:id="delta" layoutX="173.0" layoutY="67.0" prefHeight="25.0" prefWidth="98.0" />
<Label layoutX="121.0" layoutY="71.0" text="delta X" />
<Label text="Label" />
<Label layoutX="121.0" layoutY="103.0" text="Zakres" />
<TextField fx:id="zakres" layoutX="173.0" layoutY="99.0" prefHeight="25.0" prefWidth="98.0" />
<Label layoutX="25.0" layoutY="199.0" text="A0" />
<TextField fx:id="a0" layoutX="52.0" layoutY="195.0" prefHeight="25.0" prefWidth="48.0" />
</children>
</AnchorPane>
Controler
package javafxapplication5;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class FXMLDocumentController implements Initializable {
@FXML
private Label label;
public TextField a4;
public TextField a3;
public TextField a2;
public TextField a1;
public TextField a0;
public LineChart chart1;
public LineChart chart2;
public TextField zakres;
@FXML
private void handleButtonAction(ActionEvent event) {
int b1,b2,b3,b4,b0;
int zak, delta = 1;
int y, x=0;
b1 = Integer.parseInt(a1.getText());
b2 = Integer.parseInt(a2.getText());
b3 = Integer.parseInt(a3.getText());
b4 = Integer.parseInt(a4.getText());
b0 = Integer.parseInt(a0.getText());
zak = Integer.parseInt(zakres.getText());
XYChart.Series series1 = new XYChart.Series();
series1.setName("f(x)");
while(x<zak)
{
y=b4*(x^4) + b3*(x^3) + b2*(x^2) + b1*x + b0;
series1.getData().add(new XYChart.Data(x, y));
x++;
}
chart1.getData().addAll(series1);
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// chart1.autosize();
// chart2.autosize();
}
}
main
ackage javafxapplication5;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
*
* @author Agata
*/
public class JavaFXApplication5 extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
Dzięki za pomoc!!