Hallo zusammen,
meine Applikation soll eine Bibliothek werden, die ich mit JavaFX programmieren möchte.
In meinem RootLayout ist im Centerbereich meine "Bücherübersicht"(AnchorPane), die im linken Bereich eine vertikale Scrollpane besitzt, die 5 Regalböden "Regalboden" wiederrum mit 15 Büchern "Buchhalter" als horizontale Scrollpane laden soll.
Ich arbeite mit dem SceneBuilder von Oracle.
Mein Code läuft fehlerfrei, jedoch werden die Scrollpanes nicht angezeigt bzw. geladen.
Ein Bild vom etwaigen Layout und die Javadateien habe ich dazugelegt.
RegalbodenController.java
Main.java
BuchhalterController.java
BuchübersichtController.java
meine Applikation soll eine Bibliothek werden, die ich mit JavaFX programmieren möchte.
In meinem RootLayout ist im Centerbereich meine "Bücherübersicht"(AnchorPane), die im linken Bereich eine vertikale Scrollpane besitzt, die 5 Regalböden "Regalboden" wiederrum mit 15 Büchern "Buchhalter" als horizontale Scrollpane laden soll.
Ich arbeite mit dem SceneBuilder von Oracle.
Mein Code läuft fehlerfrei, jedoch werden die Scrollpanes nicht angezeigt bzw. geladen.
Ein Bild vom etwaigen Layout und die Javadateien habe ich dazugelegt.
RegalbodenController.java
Java:
import javafx.fxml.FXML;
import javafx.scene.control.ScrollPane;
public class RegalBodenController {
@FXML
private ScrollPane scrollpaneRegalboden;
private Main main;
public void setMain(Main main) {
this.main=main;
}
public ScrollPane getScrollPane() {
scrollpaneRegalboden=new ScrollPane();
return scrollpaneRegalboden;
}
}
Main.java
Java:
package de.markusc;
import java.io.IOException;
import java.util.Vector;
import de.markusc.model.Buch;
import de.markusc.view.BuchUebersichtController;
import de.markusc.view.BuchhalterController;
import de.markusc.view.RegalBodenController;
import de.markusc.view.RootLayoutController;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class Main extends Application {
private Stage primaryStage;
private BorderPane rootLayout;
private ScrollPane buchüberschichtScrollpane,regalbodenScrollpane;
private ObservableList<Buch> buchListe = FXCollections.observableArrayList();
public Main() {
for(int i=0; i<15;i++) {
buchListe.add(new Buch("Bauzeichnen", "Zwanzig","Fachbuch","20.03.2018","Libri",623,"9783778256459","Nein","von bis","schön","Es war einmal","pfad"));
}
}
public ObservableList<Buch> getPersonData() {
return buchListe;
}
@Override
public void start(Stage primaryStage) {
try {
this.primaryStage=primaryStage;
this.primaryStage.setTitle("Bibliothek");
initRootLayout();
showBooks();
} catch(Exception e) {
e.printStackTrace();
}
}
public void initRootLayout() {
try {
FXMLLoader loader= new FXMLLoader();
loader.setLocation(Main.class.getResource("view/RootLayout.fxml"));
rootLayout= (BorderPane) loader.load();
Scene scene=new Scene(rootLayout);
primaryStage.setScene(scene);
RootLayoutController controller = loader.getController();
controller.setMain(this);
primaryStage.show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void showBooks() {
try {
// lädt die BücherÜbersicht
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/BuchUebersicht.fxml"));
AnchorPane buchUebersicht = (AnchorPane) loader.load();
rootLayout.setCenter(buchUebersicht);
// Give the controller access to the main app.
BuchUebersichtController controller = loader.getController();
controller.setMain(this);
buchüberschichtScrollpane =controller.getScrollpane();
Vector vregalBoden= new Vector();
for(int i=0; i<5; i++) {
FXMLLoader loaderRegalboden = new FXMLLoader();
loaderRegalboden.setLocation(Main.class.getResource("view/Regalboden.fxml"));
AnchorPane regalboden = (AnchorPane) loaderRegalboden.load();
RegalBodenController regalbodenController= loaderRegalboden.getController();
regalbodenController.setMain(this);
regalbodenScrollpane=regalbodenController.getScrollPane();
vregalBoden.add(regalbodenScrollpane);
}
Vector vbuchhalter= new Vector();
for(int i=0; i<15; i++) {
FXMLLoader loaderBuchHalter = new FXMLLoader();
loaderBuchHalter.setLocation(Main.class.getResource("view/BuchHalter.fxml"));
AnchorPane buchHalter = (AnchorPane) loaderBuchHalter.load();
BuchhalterController buchhalterController=loaderBuchHalter.getController();
buchhalterController.setMain(this);
buchhalterController.showBook(buchListe.get(i));
vbuchhalter.add(buchHalter);
}
for(int j=0; j<vregalBoden.size(); j++) {
for(int i=0; i<vbuchhalter.size();i++) {
regalbodenScrollpane.setContent((Node) vbuchhalter.get(i));
}
buchüberschichtScrollpane.setContent((Node) vregalBoden.get(j));
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
BuchhalterController.java
Java:
package de.markusc.view;
import de.markusc.Main;
import de.markusc.model.Buch;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
public class BuchhalterController {
private Main main;
@FXML
private Label titel;
@FXML
private Label autor;
@FXML
private Label seitenzahl;
public void BuchhalterController() {
}
public void setMain(Main main) {
this.main=main;
}
public void showBook(Buch buch) {
if(buch!=null) {
titel.setText(buch.getTitel().get());
autor.setText(buch.getAutor().get());
seitenzahl.setText(String.valueOf(buch.getSeitenzahl().get()));
}
}
}
BuchübersichtController.java
Java:
package de.markusc.view;
import de.markusc.Main;
import javafx.fxml.FXML;
import javafx.scene.control.ScrollPane;
public class BuchUebersichtController {
private Main main;
@FXML
private ScrollPane scrollpane;
public void setMain(Main main) {
this.main=main;
}
public ScrollPane getScrollpane() {
scrollpane=new ScrollPane();
return scrollpane;
}
}