Combobox-Werte in GUI anzeigen

Rubberduck

Mitglied
Hallo zusammen,
Ich stehe vor dem Problem, dass meine Werte aus der Combobox nicht im GUI angezeigt werden.

In der Klasse public class AnimalEditDialogController konnte ich die Werte erfolgreich programmieren:
Java:
public class AnimalEditDialogController {
   
    ObservableList<String> bestellungnotwendigList = FXCollections
            .observableArrayList("Ja", "Nein");
   
        @FXML
    private ComboBox<String> bestellungnotwendigBox;
   
    /**
     * Sets the animal to be edited in the dialog.
     *
     * @param animal
     */
    public void setAnimal(Animal animal) {
        this.animal = animal;

        bestellungnotwendigBox.setItems(bestellungnotwendigList);
    }
   
        /**
     * Called when the user clicks ok.
     */
    @FXML
    private void handleOk() {
        if (isInputValid()) {

            animal.setBestellungnotwendig(bestellungnotwendigBox.getPromptText());

            okClicked = true;
            dialogStage.close();
        }
    }
1586667627476.png

Leider funktioniert jedoch die Anzeige der Combobox-Werte nach dem Abspeichern in der public class AnimalOverviewController nicht, obwohl ich definiert habe, dass diese angezeigt werden sollen:
Java:
private void showAnimalDetails(Animal animal) {
        if (animal != null) {
            // Fill the labels with info from the animal object.
           
            bestellungnotwendigLabel.setText(animal.getBestellungnotwendig());

        } else {
            bestellungnotwendigLabel.setText("");
        }
    }
1586668014750.png

Danke für die Hilfe.
 

Hatsi09

Aktives Mitglied
Hallo,

2 Fragen:
- Hast du das mit Swing / Awt oder mit JavaFx programmiert?
- Kannst du mal den ganzen Code posten, vor allem da, wo die GUI Elemente initialisiert werden?
 

lam_tr

Top Contributor
Hallo,

2 Fragen:
- Hast du das mit Swing / Awt oder mit JavaFx programmiert?
- Kannst du mal den ganzen Code posten, vor allem da, wo die GUI Elemente initialisiert werden?
Ich glaube dass sollte Javafx sein wegen FXCollections.

@Rubberduck
Kann es sein dass deine setAnimal Methode nicht aufgerufen wird sodass die Combobox nicht initialisiert wird? Wenn es sowieso nur um ja oder nein wert geht, warum nicht Check box? Ansonsten würde ich die Combobox in der initialize Methode befüllen.
 
Zuletzt bearbeitet:

Rubberduck

Mitglied
Hallo Zusammen

Zu 1: Ja, war mit JavaFX

Zu 2: Hier die Klasse, in welcher ich die Checkbox initialisiert habe:

@lam_tr: Ja, dass scheint wohl das Problem zu sein. Die Combobox in der initialize Methode zu befüllen, habe ich bereits versucht - leider erfolglos.
Danke für den Tip mit der Checkbox, werde ich gerne ausprobieren.

Java:
package ch.animal.view;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
import ch.animal.model.Animal;
import ch.animal.util.DateUtil;

/**
 * Dialog to edit details of an animal.
 *
 * @author Damian Krebs
 */

public class AnimalEditDialogController {
    
    ObservableList<String> bestellungnotwendigList = FXCollections
            .observableArrayList("Ja", "Nein");
    
    public ObservableList<String> getBestellungnotwendigList() {
        return bestellungnotwendigList;
    }

    public void setBestellungnotwendigList(ObservableList<String> bestellungnotwendigList) {
        this.bestellungnotwendigList = bestellungnotwendigList;
    }

    @FXML
    private TextField tierArtField;
    @FXML
    private TextField futterArtField;
    @FXML
    private TextField aktuellerBestandField;
    @FXML
    private TextField mengeneinheitField;
    @FXML
    private ComboBox<String> bestellungnotwendigBox;
    @FXML
    private TextField bestelldatumField;


    private Stage dialogStage;
    private Animal animal;
    private boolean okClicked = false;
    
    /**
     * Initializes the controller class. This method is automatically called
     * after the fxml file has been loaded.
     */
    @FXML
    private void initialize() {
    }

    /**
     * Sets the stage of this dialog.
     *
     * @param dialogStage
     */
    public void setDialogStage(Stage dialogStage) {
        this.dialogStage = dialogStage;
    }
    
    /**
     * Sets the animal to be edited in the dialog.
     *
     * @param animal
     */
    public void setAnimal(Animal animal) {
        this.animal = animal;

        tierArtField.setText(animal.getTierArt());
        futterArtField.setText(animal.getFutterArt());
        aktuellerBestandField.setText(Double.toString(animal.getAktuellerBestand()));
        mengeneinheitField.setText(animal.getMengeneinheit());
        //bestellungnotwendigBox.setValue("Ja");
        bestellungnotwendigBox.setItems(bestellungnotwendigList);
        bestelldatumField.setText(DateUtil.format(animal.getBestelldatum()));
        bestelldatumField.setPromptText("dd.mm.yyyy");
    }
    
    /**
     * Returns true if the user clicked OK, false otherwise.
     *
     * @return
     */
    public boolean isOkClicked() {
        return okClicked;
    }
    
    /**
     * Called when the user clicks ok.
     */
    @FXML
    private void handleOk() {
        if (isInputValid()) {
            animal.setTierArt(tierArtField.getText());
            animal.setFutterArt(futterArtField.getText());
            animal.setAktuellerBestand(Double.parseDouble(aktuellerBestandField.getText()));
            animal.setMengeneinheit(mengeneinheitField.getText());
            animal.setBestellungnotwendig(bestellungnotwendigBox.getPromptText());
            animal.setBestelldatum(DateUtil.parse(bestelldatumField.getText()));

            okClicked = true;
            dialogStage.close();
        }
    }
    
    /**
     * Called when the user clicks cancel.
     */
    @FXML
    private void handleCancel() {
        dialogStage.close();
    }
    
    /**
     * Validates the user input in the text fields.
     *
     * @return true if the input is valid
     */
    private boolean isInputValid() {
        String errorMessage = "";

        if (tierArtField.getText() == null || tierArtField.getText().length() == 0) {
            errorMessage += "No valid tier art!\n";
        }
        if (futterArtField.getText() == null || futterArtField.getText().length() == 0) {
            errorMessage += "No valid futter art!\n";
        }
        if (aktuellerBestandField.getText() == null || aktuellerBestandField.getText().length() == 0) {
            errorMessage += "No valid aktueller bestand!\n";
        } else {
            // try to parse the aktueller bestand into an double.
            try {
                Double.parseDouble(aktuellerBestandField.getText());
            } catch (NumberFormatException e) {
                errorMessage += "No valid aktueller bestand (must be an double)!\n";
            }
        }
        
        if (mengeneinheitField.getText() == null || mengeneinheitField.getText().length() == 0) {
            errorMessage += "No valid mengen einheit!\n";
        }
        

        if (bestelldatumField.getText() == null || bestelldatumField.getText().length() == 0) {
            errorMessage += "No valid bestelldatum!\n";
        } else {
            if (!DateUtil.validDate(bestelldatumField.getText())) {
                errorMessage += "No valid bestelldatum. Use the format dd.mm.yyyy!\n";
            }
        }

        if (errorMessage.length() == 0) {
            return true;
        } else {
            // Show the error message.
            Alert alert = new Alert(AlertType.ERROR);
            alert.initOwner(dialogStage);
            alert.setTitle("Invalid Fields");
            alert.setHeaderText("Please correct invalid fields");
            alert.setContentText(errorMessage);
            
            alert.showAndWait();
            
            return false;
        }
    }
}
 

lam_tr

Top Contributor
Also das hier wird aufgerufen wenn du deine FXML lädst? Versuch doch mal an der Stelle ein Breakpoint zu setzen und zu schauen was die ComboBox zurückliefert.

Code:
 @FXML

    public void initialize() {

      bestellungnotwendigBox.setItems(bestellungnotwendigList);

    }
 

Hatsi09

Aktives Mitglied
Korrigiere mich wenn ich falsch liege, aber deine initialize()-Methode ist doch oben leer, d.h. es wird nicht initialisiert.
Es gibt nur einen Grund wenn die leer ist und es trotzdem funktioniert: Hast du 3 Files, ein fxml, einen Controller und eine Main-Klasse (extends Application)? Hast du das mit dem Scenebuilder gemacht, bzw. deine FXML GUI Element Variablen auch mit dem fxml file verknüpft?
 

Rubberduck

Mitglied
Du liegst absolut richtig mit all deinen Punkten und ja, die FXML GUI Element Variablen habe ich auch mit dem fxml file verknüpft.
Hier sonst das komplette Projekt als zip, damit du die Zusammenhänge siehst...
 

Anhänge

  • AnimalFeedingAppTest_0.1.zip
    46,3 KB · Aufrufe: 2

lam_tr

Top Contributor
Du liegst absolut richtig mit all deinen Punkten und ja, die FXML GUI Element Variablen habe ich auch mit dem fxml file verknüpft.
Hier sonst das komplette Projekt als zip, damit du die Zusammenhänge siehst...
Ohne den Code zu kompilieren, sehe dass die initialize Methode immer noch leer ist und die setAnimal Methode wird auch nicht aufgerufen von Overview
 

Hatsi09

Aktives Mitglied
Ohne den Code zu kompilieren, sehe dass die initialize Methode immer noch leer ist und die setAnimal Methode wird auch nicht aufgerufen von Overview

Wie er schon gesagt hat, du musst in der initialize() Methode deine Textfelder und Checkboxen usw. setzen, Layout, Maße, evtl EventHandler usw.
Die initialize() ist bei einer (Javafx) Application wie der Konstruktor einer normalen Klasse, wenn der leer ist, dann hat die Klasse nix, bzw. die Attribute sind nicht initialisiert.
 

Rubberduck

Mitglied
Danke @Lama-rajjo und @Hatsi09. Meint ihr in der intitialize Methode in der Klasse AnimalEditDialogController oder AnimalOverviewController? Nur komisch, dass alle anderen Werte korrekt angezeigt werden. Nur bei der Checkbox habe ich dieses Problem.

1586668014750.png
 

Rubberduck

Mitglied
Hallo Zusammen
Ich konnte das Problem nun mit Unterstützung einer Studienkollegin lösen. Es waren wirklich nur Kleinigkeiten, die man anpassen musste. Für diejenigen, welche and der Lösung interessiert sind, hier die Erleuchtung:

Bestellungnotwendig-Box
Die Reihenfolge wurde gedreht, zuerst muss immer das Item gesetzt werden und danach der Value. Der Value wurde auf den Feldwert angepasst (gemäss Java FX)
alt:
image.png
neu:
image.png

PullDown bei der Bestellungnotwendig-Edit Maske
Bei der Ja/Nein Pulldownbox wurde der Wert auf den GetValue geändert, vorher war da getprompttext.
So funktioniert es bei mir einwandfrei.
Alt:
image.png
Neu:
image.png

Liebe Grüsse
Rubberduck
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E ComboBox werte auslesen Java Basics - Anfänger-Themen 4
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
T ComboBox getValue() zeigt null Java Basics - Anfänger-Themen 7
J Array an Combobox übergeben Java Basics - Anfänger-Themen 5
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
J Combobox füllen mit Wertausgabe von andere Klasse Java Basics - Anfänger-Themen 3
D Custom Buttons oder Custom Combobox Java Basics - Anfänger-Themen 30
G Verlassen einer ComboBox erkennen Java Basics - Anfänger-Themen 16
Mosquera Get String Array - ComboBox Java Basics - Anfänger-Themen 10
H Combobox abhängig von RadioButton Java Basics - Anfänger-Themen 4
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
T Combobox Wert auslesen und damit weiterrechnen Java Basics - Anfänger-Themen 6
J ComboBox mittels neuer Methode befüllen Java Basics - Anfänger-Themen 3
J Interface Combobox Zustand speichern Java Basics - Anfänger-Themen 1
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
J Combobox Objekte Java Basics - Anfänger-Themen 10
kaoZ Input/Output Verzeichnis Inhalt in combobox ausgeben Java Basics - Anfänger-Themen 8
V ComboBox Ergebnisse abhängig von anderer ComboBox - Wie? Java Basics - Anfänger-Themen 7
W Hilfe bei Combobox Java Basics - Anfänger-Themen 9
W GUI Label, ComboBox Java Basics - Anfänger-Themen 4
C Combobox in Abhängigkeit von Spinner Java Basics - Anfänger-Themen 6
D Wert von Combobox in Datei schreiben Java Basics - Anfänger-Themen 2
J Combobox in andere Klasse übergeben Java Basics - Anfänger-Themen 3
B ComboBox(editable) - Text verändern Java Basics - Anfänger-Themen 7
H String aus Combobox auslesen Java Basics - Anfänger-Themen 2
I ComboBox mit Icons + Mehr...! Java Basics - Anfänger-Themen 6
1 Combobox anzeige Java Basics - Anfänger-Themen 7
1 combobox nicht an fesnter angeknüpft Java Basics - Anfänger-Themen 2
1 ComboBox Java Basics - Anfänger-Themen 4
S ComboBox Spielautomat Java Basics - Anfänger-Themen 3
F ComboBox sowie String in einer JTable Spalte Java Basics - Anfänger-Themen 2
H Darstellung ComboBox in jTable Java Basics - Anfänger-Themen 5
M Combobox Problem Java Basics - Anfänger-Themen 3
D ArrayList<String> to Combobox Java Basics - Anfänger-Themen 7
Spin ComboBox Java Basics - Anfänger-Themen 4
J Taschenrechner Combobox Reaktion auf Auswahl Java Basics - Anfänger-Themen 2
M ComboBox und ActionListener Java Basics - Anfänger-Themen 3
S AWT ComboBox Ausgaba Java Basics - Anfänger-Themen 5
K rückgabewert combobox Java Basics - Anfänger-Themen 15
E Combobox Auswahl überprüfen Java Basics - Anfänger-Themen 7
B ComboBox Größe ändern Java Basics - Anfänger-Themen 4
D ComboBox Java Basics - Anfänger-Themen 10
N nicht editierbare combobox davon oberstes element auslesen? Java Basics - Anfänger-Themen 5
H combobox auf leeres Feld prüfen? Java Basics - Anfänger-Themen 10
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
D ComboBox auf <empty> überprüfen Java Basics - Anfänger-Themen 2
P Item in ComboBox manuell hinzufügen? Java Basics - Anfänger-Themen 3
C Welche Elemente sind in der ComboBox? Java Basics - Anfänger-Themen 3
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9
P Wert aus JTree in ComboBox setzen? Java Basics - Anfänger-Themen 2
D Combobox mit array abhängig von anderer Combobox mit array Java Basics - Anfänger-Themen 4
R Symbolschrift in einer ComboBox! Java Basics - Anfänger-Themen 10
G itemlistener bei combobox? Java Basics - Anfänger-Themen 10
G ComboBox und Arrays Inhalt speichern/ausgeben Java Basics - Anfänger-Themen 7
G ComboBox mit identischen einträgen Java Basics - Anfänger-Themen 2
G ComboBox in eine JTable einbinden Java Basics - Anfänger-Themen 2
A Combobox Struts Java Java Basics - Anfänger-Themen 7
S Größe einer Combobox Java Basics - Anfänger-Themen 5
S Combobox mehrfach verwenden Java Basics - Anfänger-Themen 3
A ComboBox mit unique Werten Java Basics - Anfänger-Themen 2
T ComboBox.GetSelectedIndex() gibt immer nur 0 zurück. Java Basics - Anfänger-Themen 2
H ComboBox zur Laufzeit erzeugen? Fehler. Java Basics - Anfänger-Themen 8
S Combobox mit Icons Java Basics - Anfänger-Themen 3
D wieso ist die combobox nicht von anfang an aktiviert? Java Basics - Anfänger-Themen 4
L Aktual.problem einer Var. wenn ComboBox Element ausgewählt Java Basics - Anfänger-Themen 4
D ComboBox mit Daten einer Datenenbank Java Basics - Anfänger-Themen 8
A Combobox füllen Java Basics - Anfänger-Themen 4
C Combobox mit "History" Java Basics - Anfänger-Themen 3
W Mehrfacheinträge in ComboBox Java Basics - Anfänger-Themen 8
M String Array in ComboBox toString() Java Basics - Anfänger-Themen 2
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
K Warum sind Werte in den Feldern ? Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
docmas 2DArray Werte werden nur untereinander ausgegeben Java Basics - Anfänger-Themen 1
M Nur int-Werte erlauben Java Basics - Anfänger-Themen 11
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
M Wie kann eine Methode eine andere Methode um Werte wie z.B. 1 erhöhen? Java Basics - Anfänger-Themen 6
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
J Methoden Positive Werte zählen Java Basics - Anfänger-Themen 3
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
H OOP Werte mit Set verändern Java Basics - Anfänger-Themen 6
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben