• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Linechart nie wyświetla danych

Fiszki IT
Fiszki IT
0 głosów
44 wizyt
pytanie zadane 29 kwietnia 2019 w Java przez Kabuuz Bywalec (2,700 p.)

Cześć. Chciałem stworzyć w JavaFX wykres z losowymi danymi (dla testu) ale dane wcale się nie wyświetlają. Próbowałem dodawać dane w metodzie initialize() kontrolera ale to nic nie dało, podobnie przy użyciu przycisku, który miałby je tam po prostu wgrać i nie wiem co jest nie tak. Męczę się z tym już któryś dzień i nie mam pomysłu. 

Kod Kontrolera:

package sample;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Button;

public class GraphController {

    @FXML
    private LineChart<Number, Number> chart;

    @FXML
    private Button btn;

    XYChart.Series series = new XYChart.Series();

    @FXML
    private void initialize() {
        NumberAxis xAxis=new NumberAxis();
        xAxis.setLabel("x");
        NumberAxis yAxis =new NumberAxis();
        yAxis.setLabel("y");

        chart=new LineChart<>(xAxis,yAxis);

        series.setName("Random Chart");
    }
    @FXML
    void click(ActionEvent event) {
        XYChart.Series series = new XYChart.Series();
        series.getData().add(new XYChart.Data(1970, 15));
        series.getData().add(new XYChart.Data(1980, 30));
        series.getData().add(new XYChart.Data(1990, 60));
        series.getData().add(new XYChart.Data(2000, 120));
        series.getData().add(new XYChart.Data(2013, 240));
        series.getData().add(new XYChart.Data(2014, 300));

        chart.getData().add(series);
    }
}

Kod fxml:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.chart.CategoryAxis?>
<?import javafx.scene.chart.LineChart?>
<?import javafx.scene.chart.NumberAxis?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.Pane?>

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.GraphController">
   <children>
      <LineChart fx:id="chart" prefHeight="400.0" prefWidth="600.0" title="Temperature Chart">
        <xAxis>
          <CategoryAxis side="BOTTOM" />
        </xAxis>
        <yAxis>
          <NumberAxis side="LEFT" />
        </yAxis>
      </LineChart>
      <Button fx:id="btn" layoutX="109.0" layoutY="14.0" mnemonicParsing="false" onAction="#click" text="Button" />
   </children>
</Pane>

 

1 odpowiedź

0 głosów
odpowiedź 30 kwietnia 2019 przez mbabane Szeryf (79,360 p.)

Dzieje się tak przez tę linię:

chart=new LineChart<>(xAxis,yAxis);

Tworzysz w ten sposób nową instancje wykresu, tzn. że w oknie masz inny wykres niż ten, który potem uzupełniasz w akcji przycisku.

Pierwszym krokiem jest usunięcie tej linii, ponieważ i tak wstrzykujesz instancje z FXML. I tutaj pojawi się kolejny problem, dlatego, że ustawiłeś jako oś X categoryAxis, która przyjmuje Stringi, a w metodzie click pchasz integery.

Podobne pytania

0 głosów
2 odpowiedzi 53 wizyt
–1 głos
1 odpowiedź 268 wizyt
0 głosów
1 odpowiedź 107 wizyt
pytanie zadane 6 stycznia w PHP przez Konrad Siwczyk Użytkownik (790 p.)
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

84,746 zapytań

133,553 odpowiedzi

295,968 komentarzy

56,007 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...