Hallo zusammen,
Ich erzeuge beim Programmstart eine ArrayList mit ChoiceBoxen (ArrayList Name: alCB).
Diese ChoiceBoxen enthalten jeweils alle aus der Datenbank gezogenen Lieferanten
(per toString Methode wird nur der Kurzname des Lieferanten angezeigt).
Das funktioniert auch alles.
Die erste ChoiceBox aus der ArrayList wird beim Programmstart in das GridPane eingefügt.
Die weiteren können per Buttonklick auf Wunsch zugefügt werden (maximal 10).
Die jeweilige ChoiceBox hole ich mir jeweils mit alCB.get(counter). Beginnend bei 0 für die erste ChoiceBox. Der Counter wird nach jeder Erzeugung
hochgezählt. Auch nach der ersten Erzeugung beim Programmstart.
Wählt man jetzt einen Artikel aus, soll der erste zugehörige Lieferant (es gibt mehrere, die auch jeweils in eine ArrayList gepackt werden, geholt werden diese ebenfalls aus der DB), in die erste ChoiceBox gepackt werden.
alCB.get(0).setValue(arrayLF.get(0));
Alles funktioniert, ich habe mir jeweilige Werte auf der Konsole ausgeben lassen.
System.out.println(alCB.get(0).getValue()) gibt mir den gewünschten Lieferanten.
alCB.get(0) ist auch die ChoiceBox, die beim Programmstart in das GridPane gepackt wird.
Das einzige Problem:
Die ChoiceBox zeigt den Wert nicht an.
Angeblich lässt sich so aber auf ChoiceBoxen, die dynamisch während der Laufzeit aus einer ArrayList erzeugt werden, zugreifen.
Aber irgendwie funktioniert das nicht.
Die zugehörigen Methoden sind wie folgt:
Erzeugung des/der ArrayLists (die anderen sind erstmal unerheblich):
Lieferanten zufügen:
Ausschnitt aus dem Programmablauf:
Woran kann das liegen?
Alles funktioniert wie gewünscht, nur die Methode setValue() auf die gewünschte ChoiceBox nicht, bzw scheint laut Ausgabe schon zu funktionieren,
aber das ist dann wohl nicht die, die im GridPane erscheint .
Danke schonmal im Voraus.
Ich erzeuge beim Programmstart eine ArrayList mit ChoiceBoxen (ArrayList Name: alCB).
Diese ChoiceBoxen enthalten jeweils alle aus der Datenbank gezogenen Lieferanten
(per toString Methode wird nur der Kurzname des Lieferanten angezeigt).
Das funktioniert auch alles.
Die erste ChoiceBox aus der ArrayList wird beim Programmstart in das GridPane eingefügt.
Die weiteren können per Buttonklick auf Wunsch zugefügt werden (maximal 10).
Die jeweilige ChoiceBox hole ich mir jeweils mit alCB.get(counter). Beginnend bei 0 für die erste ChoiceBox. Der Counter wird nach jeder Erzeugung
hochgezählt. Auch nach der ersten Erzeugung beim Programmstart.
Wählt man jetzt einen Artikel aus, soll der erste zugehörige Lieferant (es gibt mehrere, die auch jeweils in eine ArrayList gepackt werden, geholt werden diese ebenfalls aus der DB), in die erste ChoiceBox gepackt werden.
alCB.get(0).setValue(arrayLF.get(0));
Alles funktioniert, ich habe mir jeweilige Werte auf der Konsole ausgeben lassen.
System.out.println(alCB.get(0).getValue()) gibt mir den gewünschten Lieferanten.
alCB.get(0) ist auch die ChoiceBox, die beim Programmstart in das GridPane gepackt wird.
Das einzige Problem:
Die ChoiceBox zeigt den Wert nicht an.
Angeblich lässt sich so aber auf ChoiceBoxen, die dynamisch während der Laufzeit aus einer ArrayList erzeugt werden, zugreifen.
Aber irgendwie funktioniert das nicht.
Die zugehörigen Methoden sind wie folgt:
Erzeugung des/der ArrayLists (die anderen sind erstmal unerheblich):
Java:
[/B]
public void generateLFArrays() {
alCB = new ArrayList<ChoiceBox<Lieferant>>();
tfLLP = new ArrayList<TextField>();
tfLEK = new ArrayList<TextField>();
tfLRab = new ArrayList<TextField>();
tfLaktuell = new ArrayList<TextField>();
btnLakt = new ArrayList<Button>();
for (int i=0; i<=9; i++) {
alCB.add(new ChoiceBox<Lieferant>());
tfLLP.add(new TextField());
tfLEK.add(new TextField());
tfLRab.add(new TextField());
tfLaktuell.add(new TextField());
btnLakt.add(new Button("aktualisieren"));
}
}
[B]
Lieferanten zufügen:
Java:
[/B]
public void addLieferant() {
gpPreise.add(alCB.get(lfCounter), 0, rowLF);
gpPreise.add(tfLLP.get(lfCounter), 1, rowLF);
gpPreise.add(tfLEK.get(lfCounter), 2, rowLF);
gpPreise.add(tfLRab.get(lfCounter), 3, rowLF);
gpPreise.add(btnLakt.get(lfCounter), 4, rowLF);
gpPreise.add(tfLaktuell.get(lfCounter), 5, rowLF);
alCB.get(lfCounter).setPrefWidth(150);
alCB.get(lfCounter).setMaxWidth(150);
alCB.get(lfCounter).getItems().addAll(fillLieferanten());
lfCounter++;
rowLF++;
}
[B]
Ausschnitt aus dem Programmablauf:
Java:
[/B]
addLieferant();
// ....
arrayKON = db.getKonditionen(tfArtikelnummer.getText());
if (!arrayKON.isEmpty()) {
arrayLF.addAll(fillLieferanten());
System.out.println(arrayLF.get(0).getKurzname()); // -----> gibt den erwarteten Lieferanten aus
System.out.println(arrayKON.get(0).getLieferant()); // -----> gibt den erwarteten Lieferanten aus
alCB.get(0).setValue(arrayLF.get(0)); // ----> der gesetzte Wert wird in der ChoiceBox im GridPane nicht angezeigt
System.out.println(alCB.get(0).getValue()); // -----> gibt den erwarteten Lieferanten aus
}
[B]
Woran kann das liegen?
Alles funktioniert wie gewünscht, nur die Methode setValue() auf die gewünschte ChoiceBox nicht, bzw scheint laut Ausgabe schon zu funktionieren,
aber das ist dann wohl nicht die, die im GridPane erscheint .
Danke schonmal im Voraus.