JavaFX - Objekt an neue Stage übergeben

S

SteffiBee

Mitglied
Hallo Zusammen,

ich versuche derzeit ein Programm für eine Mitarbeiterverwaltung zu erstellen.

Dort kann ich durch Klick auf einen Mitarbeiter aus der Liste mir diesen auch anzeigen lassen.
Ebenso wird dort durch Klick auf "Facharbeiter zufügen" bzw. "Hilfsarbeiter zufügen" eine neue
View geöffnet, in der ich einen neuen Mitarbeiter anlegen kann.

Probleme macht mir der Menü-Punkt "Mitarbeiter bearbeiten".
Ich möchte durch Klick auf einen Mitarbeiter aus der Liste diesen wie gehabt anzeigen lassen
und durch einen weiteren Klick auf den darunter liegenden Button den Mitarbeiter bearbeiten.

Ich habe keine Ahnung, wie ich den ausgewählten Mitarbeiter mit seinen Attributen der
sich dann öffnenden View übergeben soll.
Ich weiß, dass ich die Textfelder mit getVorname() etc. füllen kann, aber eben nicht, wie der Mitarbeiter
aus der Liste übergeben wird.

Ich würde gerne die jeweiligen Views zum Anlegen eines Mitarbeiters (Facharbeiter und Hilfsarbeiter sind getrennt)
wiederverwenden. Nur dann eben mit den vordefinierten Werten des gewählten Mitarbeiters. Geht das?

Folgende Methode nutze ich zur Anzeige eines selektierten Mitarbeiters:

Java:
[/B]
list.getSelectionModel().selectedItemProperty()
                .addListener((ChangeListener<? super Mitarbeiter>) new ChangeListener<Mitarbeiter>() {

                    @Override
                    public void changed(ObservableValue<? extends Mitarbeiter> observable, Mitarbeiter oldValue,
                            Mitarbeiter newValue) {
                        text.setText(newValue.drucke());
                    }
        });
[B]

Und mit der Methode öffne ich die jeweilige View zur Neuanlage:

Java:
[/B]
facharbHinzu.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                FacharbeiterView viewF1 = new FacharbeiterView(primaryStage, new Facharbeiter(), mitarbeiterliste, obliste);
                viewF1.showView();
            }
        });
[B]

Ich weiß leider nicht, welchen Code Ihr noch benötigt, um eventuell zu helfen.
Kann ich aber ohne Weiteres posten.

Danke im Voraus und Liebe Grüße
Steffi
 
S

SteffiBee

Mitglied
Weil mehrere Fenster Teil der Aufgabe sind. Und ich persönlich es auch übersichtlicher finde.
 
mihe7

mihe7

Top Contributor
Wenn ich Dich richtig verstanden habe, musst Du doch lediglich beim Erstellen der FacharbeiterView den ausgewählten Mitarbeiter (list.getSelectionModel().getSelectedItem()) als Parameter mitgeben.
 
S

SteffiBee

Mitglied
Ja, aber irgendwie bekomme ich das nicht hin 😞. Im Übrigen muss noch der Status abgefragt werden, je nachdem ob Facharbeiter oder Hilfsarbeiter muss die dementsprechende Stage geöffnet werden.
 
mihe7

mihe7

Top Contributor
Ja, aber irgendwie bekomme ich das nicht hin
Warum nicht? Du hast doch list und per list.getSelectionModel().getSelectedItem() erhältst Du den ausgewählten Mitarbeiter und den übergibst Du an den Konstruktor von FacharbeiterView (den musst Du natürlich anpassen).

Im Übrigen muss noch der Status abgefragt werden, je nachdem ob Facharbeiter oder Hilfsarbeiter muss die dementsprechende Stage geöffnet werden.

Naja, wenn Du den Mitarbeiter hast, kannst Du ja problemlos dessen Status abrufen, oder?


Zeig mal den Code.
 
S

SteffiBee

Mitglied
Hey.
Danke für die Antwort.
Werde das mal versuchen und berichten.

Welchen Code bräuchtest Du denn?
 
S

SteffiBee

Mitglied
Hey.
Hab es jetzt so versucht, aber das funktioniert auch nicht.
Er zeigt zwar keinerlei Fehler, aber er öffnet einfach das Fenster nicht.


Java:
[/B]
mabearbeiten.setOnAction(new EventHandler<ActionEvent>() {
          
             @Override 
             public void handle(ActionEvent event) {
                 list.getSelectionModel().selectedItemProperty()
                     .addListener((ChangeListener<? super Mitarbeiter>) new ChangeListener<Mitarbeiter>() {
          
                         @Override 
                         public void changed(ObservableValue<? extends Mitarbeiter>
                             observable, Mitarbeiter oldValue, Mitarbeiter newValue) { 
                                 if (newValue.getStatus().equals("Facharbeiter")) { 
                                     FacharbeiterView viewF1 = new FacharbeiterView(primaryStage, newValue, 
                                             mitarbeiterliste, obliste); 
                                     viewF1.showView(); 
                                 } 
                         } 
                 }); 
            } 
        });
[B]

Der Konstruktor dazu sieht so aus:

Java:
[/B]
public FacharbeiterView(Stage primaryStage, Mitarbeiter mitarbeiter, Mitarbeiterliste mitarbeiterliste,
            ObservableList<Mitarbeiter> obliste) {
        super(primaryStage, mitarbeiterliste, obliste);
        this.facharbeiter = (Facharbeiter) mitarbeiter;
}
[B][B]
[/B]

Ich hab jetzt noch keine Textfelder oder so zugewiesen.
Wollte erstmal nur wissen, ob er mir die Stage dann öffnet.
Aber das funktioniert schon nicht.
 
S

SteffiBee

Mitglied
Habe es jetzt mal umgebaut:

Java:
[/B]
list.getSelectionModel().selectedItemProperty()
                .addListener((ChangeListener<? super Mitarbeiter>) new ChangeListener<Mitarbeiter>() {

                    @Override
                    public void changed(ObservableValue<? extends Mitarbeiter> observable, Mitarbeiter oldValue,
                            Mitarbeiter newValue) {
                        maAnzeigen.setText(newValue.drucke());
                        
                        mabearbeiten.setOnAction(new EventHandler<ActionEvent>() {
                              
                             @Override 
                             public void handle(ActionEvent event) {
                                 
                                 if (newValue.getStatus().equalsIgnoreCase("Facharbeiter")) { 
                                         FacharbeiterView viewF1 = new FacharbeiterView(primaryStage, newValue, 
                                                 mitarbeiterliste, obliste); 
                                         viewF1.showView(); 
                                     } 
                                 else if (newValue.getStatus().equalsIgnoreCase("Hilfsarbeiter")) { 
                                         HilfsarbeiterView viewF1 = new HilfsarbeiterView(primaryStage, newValue, 
                                                 mitarbeiterliste, obliste); 
                                         viewF1.showView(); 
                                     } 
                             
                        }
[B]

Daraufhin schmeißt er mir ne NullPointerException. Und zwar hier: if (newValue.getStatus().equalsIgnoreCase("Facharbeiter"))
 
T

Trjavnamen

Bekanntes Mitglied
Die Blöcke beginnen doch mit
Java:
[B]
list.getSelectionModel().selectedItemProperty()
                .addListener((ChangeListener<? super Mitarbeiter>) new ChangeListener<Mitarbeiter>() {

                    @Override
                    public void changed(ObservableValue<? extends Mitarbeiter> observable, Mitarbeiter oldValue,
                            Mitarbeiter newValue) {
                        maAnzeigen.setText(newValue.drucke());
                        
                        mabearbeiten.setOnAction(new EventHandler<ActionEvent>() {
                              
                             @Override
                             public void handle(ActionEvent event) {
                                
                                 if (newValue.getStatus().equalsIgnoreCase("Facharbeiter")) {
                                         FacharbeiterView viewF1 = new FacharbeiterView(primaryStage, newValue,
                                                 mitarbeiterliste, obliste);
                                         viewF1.showView();
                                     }
                                 else if (newValue.getStatus().equalsIgnoreCase("Hilfsarbeiter")) {
                                         HilfsarbeiterView viewF1 = new HilfsarbeiterView(primaryStage, newValue,
                                                 mitarbeiterliste, obliste);
                                         viewF1.showView();
                                     }
                            
                        }
[/B]
" Umgekehrt sind sie leer oder?
 
S

SteffiBee

Mitglied
Was meinst Du mit umgekehrt?
Habe es grob jetzt erstmal hinbekommen.
Nur das Geburtsdatum funktioniert noch nicht ganz im DatePicker.
Geht irgendwie nur mit setPromptText. Dann wird es nur schwach grau angezeigt. Wie ein Platzhalter
 
kneitzel

kneitzel

Top Contributor
Nur das Geburtsdatum funktioniert noch nicht ganz im DatePicker.
Geht irgendwie nur mit setPromptText. Dann wird es nur schwach grau angezeigt. Wie ein Platzhalter
setPromptText setzt den Text, der als Information dienen soll, was in das Feld gehört, der grau angezeigt wird, wenn das Feld leer ist.

Willst Du das Geburtsdatum in dem DatePicker Control anzeigen / ausgewählt haben? Dann wäre vermutlich setValue die Methode, die Du aufrufen willst. (Kommt von ComboBoxBase und verlangt ein LocalDate (DatePicker ist abgeleitet von ComboBoxBase<LocalDate> daher ist T in der Dokumentation LocalDate).

Ist auch in der Beschreibung der Klasse so angegeben worden:
The value property represents the currently selected LocalDate. An initial date can be set via the constructor or by calling setValue(LocalDate). The default value is null.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Javafx Eventhandler zu jedem Node Java Basics - Anfänger-Themen 1
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
T HTMLEditor JavaFX Java Basics - Anfänger-Themen 4
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
P Probleme bei der Installation von JavaFX Java Basics - Anfänger-Themen 3
R Umsetzungsplan JavaFx App Java Basics - Anfänger-Themen 9
M JavaFX- Verschiedene Stages Java Basics - Anfänger-Themen 1
P JavaFx einrichten Java Basics - Anfänger-Themen 6
Torsten.E JavaFX mit Visual Studio Code verwenden Java Basics - Anfänger-Themen 1
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
T Javafx ListView kann nicht gefüllt werden. Java Basics - Anfänger-Themen 6
D JAVAFX WebVIEW zu JSOUP Java Basics - Anfänger-Themen 3
D Folgende Fehlermeldung bei der Installation von JAVAFX Java Basics - Anfänger-Themen 1
S JavaFX-Arduino Kommunikation mit LCD-Anzeige Java Basics - Anfänger-Themen 0
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J javafx mediaplayer mit https Java Basics - Anfänger-Themen 3
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
D Ausführbare jar/exe aus JAVAFX Projekt erstellen (IntelliJ) Java Basics - Anfänger-Themen 14
O JavaFX XML Versuch Java Basics - Anfänger-Themen 2
O JavaFX Java Basics - Anfänger-Themen 7
M JavaFX-Übung Autospiel Java Basics - Anfänger-Themen 4
M JavaFX: Fenster bleibt weiß Java Basics - Anfänger-Themen 3
L Klassen NFC Reader und JavaFx Problem -> threads? Java Basics - Anfänger-Themen 2
J Aktuelle Zeit in einer JavaFX Anwendung aktualisieren lassen Java Basics - Anfänger-Themen 4
L JavaFx ListView rechts abgeschnitten Java Basics - Anfänger-Themen 0
I Javafx Tabpane Reiter blockieren Java Basics - Anfänger-Themen 1
S JavaFX Beginneraufgabe Java Basics - Anfänger-Themen 1
W JavaFX import Fehler/Zellularautomaten Java Basics - Anfänger-Themen 1
Spencer Reid JavaFX Memory Thread.sleep Java Basics - Anfänger-Themen 1
UnknownInnocent mit javafx button erstellen Java Basics - Anfänger-Themen 1
U Javafx Array aus Buttons Java Basics - Anfänger-Themen 2
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
K Erste Schritte JavaFX - wie von "externer" Klasse auf Methoden des Controllers zugreifen Java Basics - Anfänger-Themen 2
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
D JavaFX, Verweis auf Datei im Projekt Java Basics - Anfänger-Themen 0
M JavaFX in Swing-Applikationen einbetten Java Basics - Anfänger-Themen 5
M JavaFX: Problem mit der TableView Java Basics - Anfänger-Themen 0
P JavaFX ohne FXMLLoader Java Basics - Anfänger-Themen 3
K JavaFX UI controls Java Basics - Anfänger-Themen 1
B Farbverlauf erstellen ohne Javafx, AWT usw.? Java Basics - Anfänger-Themen 34
H Best Practice JavaFX TableView mit Zell-Rahmen anstelle von Zeilen-Balken Java Basics - Anfänger-Themen 1
M Ausgabe eines Arrays auf Label (Javafx) Java Basics - Anfänger-Themen 4
K Threads Multithread in JavaFx Java Basics - Anfänger-Themen 11
R Threads in JavaFX Java Basics - Anfänger-Themen 3
N JavaFX - (Controller) - Klasse verkleinern Java Basics - Anfänger-Themen 8
U JavaFX eine Vbox Instanz pro Pane? Java Basics - Anfänger-Themen 2
Spencer Reid JavaDoc zu JavaFx hinzufügen Java Basics - Anfänger-Themen 1
V wie kann man am einfachsten für ein Element der JavaFX die Umrandung aktiwieren ? auch ohne css ? Java Basics - Anfänger-Themen 4
D OOP JavaFX objektorientiert Java Basics - Anfänger-Themen 2
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
P JavaFX - Komponenten skalieren Java Basics - Anfänger-Themen 16
P JavaFX Textfelder geben immer null zurück Java Basics - Anfänger-Themen 8
P JavaFX TextArea.setText Java Basics - Anfänger-Themen 13
F javafx.fxml.LoadException: Root hasn't been set. Java Basics - Anfänger-Themen 0
J JavaFX aus Java-Application heraus starten Java Basics - Anfänger-Themen 7
T Swing, SWT oder JavaFX Java Basics - Anfänger-Themen 8
S [JavaFX 2.1] - Eigene Sprachauswahl? Java Basics - Anfänger-Themen 4
D Javafx XYChart Variable in Schleife erzeugen? Java Basics - Anfänger-Themen 18
E JavaFX und Java auf Kommandozeile compilen Java Basics - Anfänger-Themen 2
J Webanwendung JavaFX Java Basics - Anfänger-Themen 4
Povlsen84 [javafx] Zusammenarbeit mit Tomcat Java Basics - Anfänger-Themen 4
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
P Objekt in mehreren Methoden verwenden. Java Basics - Anfänger-Themen 3
S Aufzurufendes Objekt Java Basics - Anfänger-Themen 3
UnknownInnocent Überprüfen ob übergebenes Objekt zu Generics passt Java Basics - Anfänger-Themen 2
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
N LocalTime einem Objekt zuweisen Java Basics - Anfänger-Themen 2
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
L Objekt an Methode übergeben Java Basics - Anfänger-Themen 4
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
J Y-Koordinate von GUI-Objekt bestimmen Java Basics - Anfänger-Themen 2
M Auf erstelltes Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 5
H Referenz Objekt aufrufen Java Basics - Anfänger-Themen 12
M Objekt mit eindeutiger ID löschen, das nächste Objekt hat dann diese ID Java Basics - Anfänger-Themen 5
N Mit Objekt der Superklasse auf Methode der Subklasse zugreifen Java Basics - Anfänger-Themen 6
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14
H Objekt aus einem Array löschen Java Basics - Anfänger-Themen 1
H Objekt im Array speichern Java Basics - Anfänger-Themen 2
H Objekt mit Methode erstellen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen


Oben