Das Problem besteht darin, dass in der Initialisierungsmethode Das Feld selectedCourse ist null oder leer, obwohl die Methode setCourseDetails ihren Wert festlegt, bevor die Szene geladen wird.
Hier ist ein Codeausschnitt aus meinem CourseScreenController-Code:
Code: Select all
public class CourseScreenController implements Basics {
private String selectedCourse;
private String courseName;
// Setter method called when switching to this screen
public void setCourseDetails(String imageUrl, String courseName, String instructor, String duration, String description, String language) {
this.courseName = courseName;
selectedJSON(courseName); // Determine the course JSON path
}
public void selectedJSON(String courseName) {
if (courseName.equals("Java Programming")) {
selectedCourse = "src/main/data/courses_data/java.json";
} else if (courseName.equals("Python Programming")) {
selectedCourse = "src/main/data/courses_data/python.json";
} else if (courseName.equals("C++ Programming")) {
selectedCourse = "src/main/data/courses_data/cpp.json";
} else if (courseName.equals("WEB Programming")) {
selectedCourse = "src/main/data/courses_data/web.json";
} else {
System.out.println("Course not found!");
selectedCourse = null;
}
}
@FXML
public void initialize() {
System.out.println("Selected course: " + selectedCourse);
if (selectedCourse == null || selectedCourse.isEmpty()) {
System.err.println("Course path is not set. Defaulting to Python course.");
selectedCourse = "src/main/data/courses_data/python.json";
}
// Further logic to load sections and populate UI
}
}
Fehlerbehebung durchgeführt und überprüft, dass setCourseDetails aufgerufen wird und den Wert korrekt festlegt.
Überprüfte die Ausführungsreihenfolge und stellte fest, dass Initialisierung zuerst ausgeführt wird.
1- Wie kann ich sicherstellen, dass selectedCourse richtig eingestellt ist, bevor initialize die Logik verarbeitet?
2- Gibt es eine bessere Möglichkeit, Daten zwischen Controllern in JavaFX zu übergeben, um dies zu vermeiden? Probleme?
Da ich Java-Neuling bin, wäre ich für Erklärungen oder Ressourcen zum besseren Verständnis sehr dankbar.