JavaFX Übergabe von Parametern an Controller

RobGe

Mitglied
Hey Leute!

Ich habe ein Programm geschrieben, das Personen in eine Datenbank einträgt. Alles klappt soweit.

Ich habe ein Problem mit meiner Class PersonOverview. Wenn ich alle angaben gemacht habe, möchte ich auf speichern drücken. Jedoch soll dann erst ein Fenster kommen, dass nochmal alles auf einen Blick zeigt. Gefolgt dessen soll dann ein return true oder false ausgeben werde. Ob es gespeichert wird oder nicht.

Das erste Fenster ist das:
Java:
 public void show()
    {
        PersonOverviewController  POV = new PersonOverviewController()
        POV.FillIn(info[0],info[1],info[2],info[3],info[4],info[5],info[6],info[7],"AAAAA","AAA0A");
        POV.insert();
        POV.display();
    }

Dabei ist das meine Class Datei

Java:
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;


public class PersonOverviewController implements Initializable {

    @FXML
    private Label vName;
    @FXML
    private Label nName;
    @FXML
    private Label gender;
    @FXML
    private Label birth;
    @FXML
    private Label age;
    @FXML
    private Label gbort;
    @FXML
    private Label national;
    @FXML
    private Label strasse;
    @FXML
    private Label ort;
    @FXML
    private Label ausnr;

    private String [] info = new String [10]; 
   
     public void FillIn(String vName,String nName,String gender,String birth,String gbort,String national,String strasse,String ort,String postlz,String ausnr)
    {
      info[0]=vName;
      info[1]=nName;
      info[2]=gender;
      info[3]=birth;
      info[4]=gbort;
      info[5]=national;
      info[6]=strasse;
      info[7]=ort;
      info[8]=postlz;
      info[9]=ausnr;
     
     
    }
      public void insert()
     {
         
      this.nName.setText(info[0]);
      this.gender.setText(info[1]);
      this.birth.setText(info[2]);
      this.gbort.setText(info[3]);
      this.national.setText(info[4]);
      this.strasse.setText(info[5]);
      this.ort.setText(info[8] + " " + info[7]);
      this.ausnr.setText(info[9]);
     }
     public void display()
     {
        try {
               
                FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("PersonOverview.fxml"));
                Parent root1 = (Parent) fxmlLoader.load();
                Stage stage = new Stage();
                stage.setResizable(false);
                stage.setScene(new Scene(root1)); 
                stage.show();
               
               
               
        } catch (IOException ex) {
            Logger.getLogger(PersonOverviewController.class.getName()).log(Level.SEVERE, null, ex);
        }
     }
   
    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
     
    }   
   
}


Sobald ich auf ein Label zugreifen möchte, kommt:

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

Ich schon vieles versucht, aber es klappt einfach nicht?

So soll das aussehen (die labels sollen sich ändern)

UCwB5m8.png



2. Wie kann ich es so ändern, dass das vorherige Window auf die Ausgabe wartet (false oder true)?

Ich habe schon Stunden versucht es zu fixen. Aber jetzt weiß ich nicht weiter :/

 

Anhänge

  • helop.PNG
    helop.PNG
    19,5 KB · Aufrufe: 26

RobGe

Mitglied
Java:
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Node.fireEvent(Node.java:8413)
    at javafx.scene.control.Button.fire(Button.java:185)
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:394)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$353(GlassViewEventHandler.java:432)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
    at com.sun.glass.ui.View.notifyMouse(View.java:937)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
    ... 48 more
Caused by: java.lang.NullPointerException
    at register_zoll.PersonOverviewController.insert(PersonOverviewController.java:66)
    at register_zoll.PersonerfassenfxController.show(PersonerfassenfxController.java:84)
    at register_zoll.PersonerfassenfxController.check(PersonerfassenfxController.java:75)
    ... 58 more

Und wie sieht der Rest der Exception aus?
 

mrBrown

Super-Moderator
Mitarbeiter
Ah - du musst der View (bzw dem Loader) natürlich noch den Controller übergeben, ansonsten sind kennt der Controller die View nicht, und alle Labels sind nicht initialisiert.
Außerdem müsstest du display und insert tauschen - die View muss ja zumindest initialisiert sein, bevor du auf deren Elemente zugreifen kannst.

Hast du dir mal die Grundlagen zu JavaFX und FXML angeguckt?
 

RobGe

Mitglied
Ah - du musst der View (bzw dem Loader) natürlich noch den Controller übergeben, ansonsten sind kennt der Controller die View nicht, und alle Labels sind nicht initialisiert.
Außerdem müsstest du display und insert tauschen - die View muss ja zumindest initialisiert sein, bevor du auf deren Elemente zugreifen kannst.

Hast du dir mal die Grundlagen zu JavaFX und FXML angeguckt?
Ahh okay... aber wie übergebe ich den? habe das nicht mit der Class? Ist doch eigentlich der Controller für die FXML.

Ich habe mich damit schon auseinander gesetzt. Mehr oder weniger hatten wir das auch schon im Studium. Da haben wir angefangen, es noch zu schreiben. Jetzt arbeiten wir mit Scene Builder. Aber auch erst seit 2 Wochen.

Danke dir :)!
 

RobGe

Mitglied
Ich habe es versucht den Controller zu zuordnen.
Java:
 public void display()
     {
        try {

                FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("PersonOverview.fxml"));
             
                Parent root1 = (Parent) fxmlLoader.load();
                fxmlLoader.setController(this);
                Stage stage = new Stage();
                stage.setResizable(false);
                stage.setScene(new Scene(root1));
               System.out.print(nName);
                stage.show();
             
             
             
        } catch (IOException ex) {
            Logger.getLogger(PersonOverviewController.class.getName()).log(Level.SEVERE, null, ex);
        }
     }

Ich habe die Parameter ausgegeben. Wenn ich ein Object der Klasse erstelle, können diese zugeordnet werden. Nutze ich jedoch die Methode .display() so kommt es mir vor, als würde ein neues Object der Klasse enstehen? Sie stehen auf null.

Eventuell ist das auch falsch gedacht. Ich habe in den Controller eine Methode, um das Fenster zu erschaffen. Aber auch wenn ich in den Controller des normalen Fensters schreibe... kommt da auch nichts dabei raus?

Java:
 public void show()
    {
        sortInfo();
        PersonOverviewController  POV = new PersonOverviewController();
     
     
         try {

                FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("PersonOverview.fxml"));
             
                Parent root1 = (Parent) fxmlLoader.load();
                fxmlLoader.setController(POV);
                POV.FillIn(info[0],info[1],info[2],info[3],info[4],info[5],info[6],info[7],"AAAAA","AAA0A");
                Stage stage = new Stage();
                stage.setResizable(false);
                stage.setScene(new Scene(root1));
               
                stage.show();
              POV.insert();
             
             
        } catch (IOException ex) {
            Logger.getLogger(PersonOverviewController.class.getName()).log(Level.SEVERE, null, ex);
        }}
 

temi

Top Contributor
Ich experimentiere auch gerade mit JavaFX und habe den Controller in der fxml angegeben, das geht auch im Scenebuilder, ich glaube in der Leiste links - unten.
Code:
<AnchorPane ... fx:controller="controller.MainViewController">
 

mrBrown

Super-Moderator
Mitarbeiter
Ich habe die Parameter ausgegeben. Wenn ich ein Object der Klasse erstelle, können diese zugeordnet werden. Nutze ich jedoch die Methode .display() so kommt es mir vor, als würde ein neues Object der Klasse enstehen? Sie stehen auf null.

Eventuell ist das auch falsch gedacht. Ich habe in den Controller eine Methode, um das Fenster zu erschaffen. Aber auch wenn ich in den Controller des normalen Fensters schreibe... kommt da auch nichts dabei raus?
Was ist denn in beiden Fällen noch das Problem?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Swing Übergabe von String an JLabel AWT, Swing, JavaFX & SWT 9
M NullPointerException bei Übergabe eines RadioButtons AWT, Swing, JavaFX & SWT 11
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
B jTextfield Übergabe des Strings AWT, Swing, JavaFX & SWT 16
F Swing JAVA GUI Übergabe von Werten zwischen mehreren Fenstern/Klassen AWT, Swing, JavaFX & SWT 10
W SWT Übergabe Parameter wie in SWT mit "|" AWT, Swing, JavaFX & SWT 5
O MouseListener - Wert-Übergabe AWT, Swing, JavaFX & SWT 3
B Problem mit Übergabe bei action in andere Klasse AWT, Swing, JavaFX & SWT 4
S Wie Variablen Übergabe an Dialog?? AWT, Swing, JavaFX & SWT 2
L Graphics.drawImage() - Output-Größe entspricht nicht Parametern AWT, Swing, JavaFX & SWT 10
MiMa Strukturierung und Organisation von umfangreiche Controller AWT, Swing, JavaFX & SWT 1
R Fxml findet controller nicht AWT, Swing, JavaFX & SWT 2
_user_q Objekte vom MainController in anderen Controller verwenden und andersherum (NullPointerException) AWT, Swing, JavaFX & SWT 14
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
W Daten von Controller zu Controller übertragen AWT, Swing, JavaFX & SWT 7
J Saubere Trennung Model, View, Controller Javafx AWT, Swing, JavaFX & SWT 10
M JavaFX JavaFX in mehrere Controller AWT, Swing, JavaFX & SWT 21
OSchriever Auf Stage von FXML-Controller zugreifen AWT, Swing, JavaFX & SWT 12
J JavaFX JavaFX Splitpane - Zugriff auf die Controller der Elemente AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
J Injection - Aber Controller sind null AWT, Swing, JavaFX & SWT 3
J Controller ist null - Warum AWT, Swing, JavaFX & SWT 3
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
L Javafx Controller Klasse in Maven AWT, Swing, JavaFX & SWT 7
M NullPointerException / Controller AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
ralfb1105 JavaFX Exception Message von Model Class via Controller in View darstellen AWT, Swing, JavaFX & SWT 39
J Controller wird zu groß, was tun ? AWT, Swing, JavaFX & SWT 5
MiMa GUI Controller für Border Pane als MVC Modell AWT, Swing, JavaFX & SWT 1
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 29
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 0
F JavaFX ListView füllen in Controller Class AWT, Swing, JavaFX & SWT 12
L JavaFX Zugriff auf HostServices im FXML Controller AWT, Swing, JavaFX & SWT 1
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
L Wie realisiere ich einen Controller AWT, Swing, JavaFX & SWT 1
M Java FX SceneBuilder 2.0, FXML, Controller AWT, Swing, JavaFX & SWT 1
T JavaFX Controller im extra Thread AWT, Swing, JavaFX & SWT 0
I JavaFX Im Controller die ProgressBar mit Task updaten AWT, Swing, JavaFX & SWT 6
A JavaFX Von Klasse auf Controller Inhalt zugreifen AWT, Swing, JavaFX & SWT 9
KrokoDiehl JavaFX Gleiche Controller-Instanz für inludiertes FXML AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Class saveFile AWT, Swing, JavaFX & SWT 2
X JavaFX getScene().getWindow() im JavaFX Controller AWT, Swing, JavaFX & SWT 1
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
L JavaFX Verständnisfrage zu JavaFX FXML und Controller-Klasse AWT, Swing, JavaFX & SWT 1
K Kann nicht auf GUI Elemente zugreifen, mit einer Methode im Controller klappts, mit der anderen nich AWT, Swing, JavaFX & SWT 10
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
D JavaFX Controller Klasse splitten? AWT, Swing, JavaFX & SWT 16
F JavaFX Zugriff auf Controller Methode von einer normalen Klasse aus AWT, Swing, JavaFX & SWT 4
C JavaFX Controller class AWT, Swing, JavaFX & SWT 2
M Java FX Daten an Controller übergeben AWT, Swing, JavaFX & SWT 3
D JavaFX Zugriff auf Controller erlangen AWT, Swing, JavaFX & SWT 4
W JavaFX Label in Controller-Klasse in einer anderen Controller-Klasse ändern AWT, Swing, JavaFX & SWT 9
B mouseOnEntered ( Controller richtig implementieren) AWT, Swing, JavaFX & SWT 4
S View-Komponenten im Controller bekannt machen AWT, Swing, JavaFX & SWT 7
G Swing MVC / View - Controller AWT, Swing, JavaFX & SWT 7
R Model View Controller Konzept AWT, Swing, JavaFX & SWT 2
F Element anzeigen / erstellen. Maus vs Controller AWT, Swing, JavaFX & SWT 7
J Swing MVC mit Java Swing, insbesondere die Controller-Struktur AWT, Swing, JavaFX & SWT 4
A Controller für RCP AWT, Swing, JavaFX & SWT 2
J Swing Controller im MVC-Pattern AWT, Swing, JavaFX & SWT 9
M Swing Von einem Controller aus View-Elemente ändern AWT, Swing, JavaFX & SWT 11
D Design - View & Controller AWT, Swing, JavaFX & SWT 2
R Checkboxen - Event mit Controller abfangen AWT, Swing, JavaFX & SWT 7
P Verbindung View und Controller AWT, Swing, JavaFX & SWT 3
F MVC --> was ist der Controller? AWT, Swing, JavaFX & SWT 2
F MVC: Update von View und Controller AWT, Swing, JavaFX & SWT 5
S MVC - Neues Frame, neue View, neuer Controller? AWT, Swing, JavaFX & SWT 3
C Model View Controller - Beispielimplementation AWT, Swing, JavaFX & SWT 5
M SWT und Model View Controller? AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben