Hallo,
da ich erst seit Kurzem mit Java bzw. JavaFX arbeite, ist diese Frage vielleicht etwas überflüssig, aber ich hänge etwas, deshalb wende ich mich an euch.
Ich möchte in meiner GUI links einen TreeView anzeigen und auf der rechten Seite zuerst ein Default Panel mit Infos anzeigen und nach einem Klick auf beispielsweise den Knoten Panel1 sollte auf der Rechten Seite Panel1 erscheinen. Der TreeView und die Panels sind erstellt, auch der SelectionListener funktioniert wie er soll und übergibt den jeweiligen Namen des Knoten als String.
Bisher habe ich das Default Panel zu Beginn über FXMLLoader in mein RootLayout (Was einfach ein BorderPane mit Menüleiste ist) geladen.
Nun dachte ich, dass ich über eine if Abfrage und dem jeweiligen selectedNode des selectionListeners das entsprechende Panel laden kann.
Hier die wichtigen Teile des Codes ( aus der MainApp):
Der TreeSelectionListener sieht folgendermaßen aus:
Als Fehler bekomme ich eine NullPointerException in der Zeile:
Nun meine eigentliche Frage:
Ist das grundsätzlich so möglich, wie ich das vorhabe, oder wie wird das normalerweise gehandhabt, wenn man mehrere Panels "übereinander" hat und je nach Klick ein entsprechendes anzeigen möchte?
Vielen Dank für eure Hilfe.
Elena
da ich erst seit Kurzem mit Java bzw. JavaFX arbeite, ist diese Frage vielleicht etwas überflüssig, aber ich hänge etwas, deshalb wende ich mich an euch.
Ich möchte in meiner GUI links einen TreeView anzeigen und auf der rechten Seite zuerst ein Default Panel mit Infos anzeigen und nach einem Klick auf beispielsweise den Knoten Panel1 sollte auf der Rechten Seite Panel1 erscheinen. Der TreeView und die Panels sind erstellt, auch der SelectionListener funktioniert wie er soll und übergibt den jeweiligen Namen des Knoten als String.
Bisher habe ich das Default Panel zu Beginn über FXMLLoader in mein RootLayout (Was einfach ein BorderPane mit Menüleiste ist) geladen.
Nun dachte ich, dass ich über eine if Abfrage und dem jeweiligen selectedNode des selectionListeners das entsprechende Panel laden kann.
Hier die wichtigen Teile des Codes ( aus der MainApp):
Code:
String selectedItem;
String loc = "Loc";
String ofen = "Ofen";
public void showCalculationPanel(String sel1) {
try{
this.selectedItem = sel1;
//System.out.println(selectedItem);
//Load RightSide
if (selectedItem != null) {
if (selectedItem.equals(loc)) {
calculationPanel = FXMLLoader.load(getClass().getResource("view/calcPanel/Loc.fxml"));
}
else if (selectedItem.equals(ofen)) {
calculationPanel = FXMLLoader.load(getClass().getResource("view/calcPanel/Ofen.fxml"));
}
else {
calculationPanel = FXMLLoader.load(getClass().getResource("view/calcPanel/Default.fxml"));
}
}
else {
calculationPanel = FXMLLoader.load(getClass().getResource("view/calcPanel/Default.fxml"));
}
rootLayout.setRight(calculationPanel);
}
catch (IOException e) {
}
}
Der TreeSelectionListener sieht folgendermaßen aus:
Code:
String selectedItem;
private final MainApp Uebergabe = new MainApp();
@FXML
public void handleSelection() {
TreeItem<String> item = treeView.getSelectionModel().getSelectedItem();
selectedItem = item.getValue();
Uebergabe.showCalculationPanel(selectedItem);
}
Als Fehler bekomme ich eine NullPointerException in der Zeile:
Code:
rootLayout.setRight(calculationPanel);
Nun meine eigentliche Frage:
Ist das grundsätzlich so möglich, wie ich das vorhabe, oder wie wird das normalerweise gehandhabt, wenn man mehrere Panels "übereinander" hat und je nach Klick ein entsprechendes anzeigen möchte?
Vielen Dank für eure Hilfe.
Elena