• 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ą

VPS Starter Arubacloud
0 głosów
443 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,300 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 723 wizyt
pytanie zadane 14 października 2018 w Java przez MarcinZielony Użytkownik (710 p.)
0 głosów
1 odpowiedź 1,331 wizyt
pytanie zadane 19 października 2016 w Java przez K0XM4N Gaduła (3,640 p.)
0 głosów
2 odpowiedzi 560 wizyt
pytanie zadane 24 czerwca 2016 w Java przez kaminki Obywatel (1,030 p.)

92,975 zapytań

141,938 odpowiedzi

321,181 komentarzy

62,302 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...