Fala pessoal do GUJ, beleza?
Seguindo os exemplos na internet para gerar gráficos com o JavaFX, Todos sempre utilizam dados/valores já dentro do método start(Stage). Mas estou tentando fazer a mesma coisa com a minha classe recebendo os dados/valores de fora, ou seja, de uma outra classe.
Minha classe que extende Application está assim:
/* classe que extende o JavaFX */
public class PieChartExample extends Application {
private Map<String, Double> mapaValores;
public void makeChart(Map<String, Double> mapaValores) {
this.mapaValores = mapaValores;
launch();
}
@Override
public void start(Stage stage) {
List<PieChart.Data> listaValores = new ArrayList<PieChart.Data>();
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(listaValores);
for(Map.Entry<String, Double> mapa : mapaValores.entrySet()) {
listaValores.add(new PieChart.Data(mapa.getKey(), mapa.getValue()));
}
PieChart pieChart = new PieChart(pieChartData);
pieChart.setTitle("Mobile Sales");
pieChart.setClockwise(true);
pieChart.setLabelLineLength(50);
pieChart.setLabelsVisible(true);
pieChart.setStartAngle(180);
Group root = new Group(pieChart);
Scene scene = new Scene(root, 600, 400);
stage.setTitle("Pie chart");
stage.setScene(scene);
stage.show();
}
}
/* classe com os valores para o gráfico e que chama a classe com JavaFX */
public class TestChart {
public static void main(String[] args) {
Map<String, Double> mapaValores = new HashMap<>();
mapaValores.put("Iphone 5S", 13.0);
mapaValores.put("Samsung Grand", 25.0);
mapaValores.put("MOTO G", 10.0);
mapaValores.put("Nokia Lumia", 22.0);
new PieChartExample().makeChart(mapaValores);
}
}
Meu atributo “mapaValores” é preenchido normalmente no método makeChart(), mas quando é executado o launch() e então é executado método start() do JavaFX o atributo “mapaValores” está sempre nulo.
Alguém teria algum exemplo de como Eu poderia fazer isso que eu quero, e que me parece ser simples?
Meu exemplo segue o desse link aqui: https://www.tutorialspoint.com/javafx/pie_chart.htm
Abraço e sucesso. =)