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

JavaFX Problem z przekazywaniem między kontrolerem i inną klasą

Object Storage Arubacloud
0 głosów
426 wizyt
pytanie zadane 17 listopada 2018 w Java przez Amakesh Nowicjusz (220 p.)

Witam!
Mam prostą aplikację w JavaFX. Ma ona na początek wyświetlać w oknie obiekty z tablicy, utworzone i umieszczone w niej wcześniej w losowej kolejności. Obiekty generowane i umieszczane tablicy są w klasie GeneratorKafli.. Próbuję więc przekazać (na razie tylko po jednym polu każdego obiektu) do kontrolera i wyświetlić w jednym z pól tekstowych, ale niestety nie działa. Wszystko wyświetla się poprawnie tylko w konsoli - najpierw tekst przekazany z klasy GeneratorKafli a potem tekst jaki został ustawiony w polu tekstowym(ten sam co przekazany z klasy GeneratorKafli) a w oknie gui pozostaje dalej domyślny tekst "test". Dlaczego tak się dzieje? Proszę o pomoc

Main

package application;
 
import java.io.IOException;
 
//import App.GeneratorKafli;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.fxml.FXMLLoader;
 
public class Main extends Application {
 
    @Override
    public void start(Stage primaryStage) {
        try {
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Sample.fxml"));
            Parent root = (Parent) fxmlLoader.load();
            SampleController fooController = ((SampleController) fxmlLoader.getController());
            fooController.setStage(primaryStage);
            Scene scene = new Scene(root,1024,768);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
 
    public static void main(String[] args) throws IOException {
        GeneratorKafli generator = new GeneratorKafli();
        generator.GenerujKafle4x4();
        generator.PokazKafle(); 
        launch(args);
 
    }
    }
 

 

SampleController

package application;
 
import java.net.URL;
import java.util.ResourceBundle;
 
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.geometry.Pos;
import javafx.scene.layout.TilePane;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
//import static application.GeneratorKafli.PokazKafle;
 
public class SampleController /*implements Initializable*/{
 
    @FXML
    private AnchorPane ap;
    @FXML
    public TilePane tilePane;
    @FXML
    private GridPane gridPane;
    @FXML 
    private TextField textField1;
    @FXML
    private TextField textField2;
 
    public void initialize(String data){
        System.out.print("Data: "+data + "| " );
        textField1.setText("OK@@ " + data);
        System.out.print(" TF: " + textField1.getText());   
    }
 
}

 

GeneratorKafli

  public void PokazKafle() throws IOException {
 
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Sample.fxml"));
            Parent root = fxmlLoader.load();
        SampleController fooController = fxmlLoader.<SampleController>getController();  
        String d = "";
 
    for (int i=0; i<15; i++) {
 
          d = kafle[i].getNazwa();    
          fooController.initialize(d);
 
            //System.out.println(kafle[i].getId() + " " + kafle[i].getNazwa() + " " + kafle[i].getImage() + "\n");      
        }   
    }

 

1 odpowiedź

0 głosów
odpowiedź 18 listopada 2018 przez mbabane Szeryf (79,280 p.)
SampleController z metody PokazKafle i z metody main to nie jest ten sam obiekt. Mówiąc inaczej w metodzie PokazKafle operujesz na innej instancji kontrolera niż ta, która faktycznie jest przypisana do wyświetlanego okna.

Podobne pytania

0 głosów
2 odpowiedzi 597 wizyt
pytanie zadane 14 października 2018 w Java przez MarcinZielony Użytkownik (710 p.)
0 głosów
1 odpowiedź 1,247 wizyt
pytanie zadane 19 października 2016 w Java przez K0XM4N Gaduła (3,640 p.)
0 głosów
2 odpowiedzi 541 wizyt
pytanie zadane 24 czerwca 2016 w Java przez kaminki Obywatel (1,030 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...