Boa noite, estou fazendo um trabalho escolar, e resolvi utilizar Java FX, porém meu conhecimento é minimo (senão, zero).
Meu objetivo é criar uma tela aonde digitando os valores X e Y e apertando um botão, esses valores sejam utilizados na construção do gráfico, que ficaria do lado.
Pesquisando um pouco, resolvi usar o Bubble Chart, mas o problema que percebi logo de cara foi com a utilzação do Scene Builder (aonde moldo a interface).
Consegui colocar todos os elementos da interface, mas na hora de passar os dados X e Y para o gráfico, eu realmente não sei o que fazer, uma vez que não entendo muito bem o funcionamento do Bubble Chart, alguém poderia me ajudar?
Código do .java principal:
package org.geometria;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
* @author Hudson Vieira Carvalho
*/
public class Geometria extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLGráfico.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setTitle("Aplicativo Muito Louco dos Circulos");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Código do controlador do FXML:
package org.geometria;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.chart.BubbleChart;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
/**
* @author Hudson Vieira Carvalho
*/
public class FXMLGráficoController implements Initializable {
private double x, y;
@FXML
private Label labelTextoGrafico;
@FXML
private Label labelTextoUm;
@FXML
private TextField textFieldX;
@FXML
private Label labelX;
@FXML
private Label labelY;
@FXML
private TextField textFieldY;
@FXML
private Button buttonGo;
@FXML
private Button closeButton;
@FXML
private BubbleChart<?, ?> bubbleChart;
@FXML
private void closeButtonAction(ActionEvent event) {
Stage stage = (Stage) closeButton.getScene().getWindow();
stage.close();
}
@FXML
private void getXAndY(ActionEvent event) {
this.x = Integer.valueOf(textFieldX.getAccessibleText());
this.y = Integer.valueOf(textFieldY.getAccessibleText());
XYChart.Series series1 = new XYChart.Series();
series1.setName("Product 1");
series1.getData().add(new XYChart.Data(this.x, this.y));
}
@Override
public void initialize(URL url, ResourceBundle rb) {
}
}
O XML em si:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.chart.BubbleChart?>
<?import javafx.scene.chart.NumberAxis?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane id="AnchorPane" prefHeight="449.0" prefWidth="680.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.171" fx:controller="org.geometria.FXMLGráficoController">
<children>
<Label fx:id="labelTextoGrafico" layoutX="415.0" layoutY="40.0" text="Gráfico">
<font>
<Font size="19.0" />
</font>
</Label>
<Separator layoutX="207.0" layoutY="23.0" orientation="VERTICAL" prefHeight="409.0" prefWidth="11.0" />
<Label fx:id="labelTextoUm" layoutX="43.0" layoutY="44.0" text="Insira as coordenadas:">
<font>
<Font size="13.0" />
</font>
</Label>
<TextField fx:id="textFieldX" layoutX="58.0" layoutY="115.0" prefHeight="25.0" prefWidth="38.0" />
<Label fx:id="labelX" layoutX="38.0" layoutY="118.0" text="X:">
<font>
<Font size="13.0" />
</font>
</Label>
<Label fx:id="labelY" layoutX="114.0" layoutY="118.0" text="Y:">
<font>
<Font size="13.0" />
</font>
</Label>
<TextField fx:id="textFieldY" layoutX="132.0" layoutY="115.0" prefHeight="25.0" prefWidth="38.0" />
<Separator layoutX="31.0" layoutY="252.0" prefHeight="0.0" prefWidth="165.0" />
<Button fx:id="buttonGo" layoutX="97.0" layoutY="200.0" mnemonicParsing="false" text="Go!" />
<Button fx:id="closeButton" layoutX="39.0" layoutY="325.0" mnemonicParsing="false" onAction="#closeButtonAction" prefHeight="25.0" prefWidth="150.0" text="Sair" />
<BubbleChart fx:id="bubbleChart" layoutX="234.0" layoutY="79.0" prefHeight="349.0" prefWidth="422.0">
<xAxis>
<NumberAxis side="BOTTOM" />
</xAxis>
<yAxis>
<NumberAxis side="LEFT" />
</yAxis>
</BubbleChart>
</children>
</AnchorPane>