TableView mit Combox wert wird nicht in die TableView gesetzt

Bluedaishi

Bekanntes Mitglied
Hallo ich habe folgendes Problem ich habe ein TableView mit einer comboBox in der ich einen wert auswählen kann
das funktioniert soweit auch , aber wenn ich die Spalte auslese bekomme ich keine werte ausgegeben.

Java:
 colSchicht1.setCellValueFactory(new PropertyValueFactory<>("Schicht-1"));
        colSchicht1.setCellFactory(TextFieldTableCell.<Objekte>forTableColumn());
        colSchicht1.setCellFactory(ComboBoxTableCell.forTableColumn(option));
        colSchicht1.setMinWidth(80);
        colSchicht1.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Objekte, String>>() {
            @Override
            public void handle(CellEditEvent<Objekte, String> event) {
                System.out.println("Value : " + event.getNewValue());
                TablePosition<Objekte, String> pos = event.getTablePosition();
                int row = pos.getRow();
                System.out.println(row);
                Objekte schicht = event.getTableView().getItems().get(row);
            }

        });

hat vielleicht jemand eine idee

vielen Dank
 

Bluedaishi

Bekanntes Mitglied
Ich lese die gesamte Spalte aus und egal in welcher Zeile kommt immer null zurück . Obwohl in der GUI die änderten werte drin stehen
 

httpdigest

Top Contributor
Google doch einfach mal nach "setOnEditCommit". Da findest du z.B. das Beispiel hier:
https://docs.oracle.com/javafx/2/ui_controls/TableViewSample.java.html
Suche da drin nach "setOnEditCommit" und du siehst, wie sie das Modell der Table ändern.
Auf deinen Use-Case übertragen heißt das soviel wie: Nachdem du dir mit `Objekte schicht = event.getTableView().getItems().get(row);` deine Modelldaten für diese Zeile geholt hast, musst du die Modelldaten für diese Spalte anpassen/setzen.
 

mihe7

Top Contributor
Tut mi leid, ich schau nicht ständig rein. Zur Lösung s. Antwort von @httpdigest ; es könnte auch funktionieren, wenn Du einfach keinen setOnEditCommit-Handler setzt.
 

dzim

Top Contributor
Ausserdem: Warum an zwei Zeilen hintereinander eine andere CellFactory setzen? Die zweite überschreibt die erste, damit kannst du die erste auch gleich löschen.
Und: colSchicht1.setCellFactory(ComboBoxTableCell.forTableColumn(option));
  • an welche Column hängst du die CellFactory? (col#setCellFactory)
  • für welche Column erstellst du die CellFactory? (ComboBoxTableCell#forTableColumn(col))
Ohne den Code zu studieren, würde ich sagen, das könnte sich auch negativ auswirken.
 

mihe7

Top Contributor
Seine Frage zielt darauf ab, dass Du ein und der selben Spalte (colSchicht1) unmittelbar hintereinander zwei CellFactories zuweist. Die zweite Zuweisung ersetzt die erste.
 

dzim

Top Contributor
*Sigh*

Ersetze mal die nun verbleibende Zeile mit colSchicht1.setCellFactory(ComboBoxTableCell.forTableColumn(colSchicht1)); -> Du setzt die CellFactory, die du mit der Spalte option baust, auf die Spalte colSchicht1.
 

Bluedaishi

Bekanntes Mitglied
Java:
private String[] option = {"CAFE SPÄT", "CAFE FRÜH", "SPÄT OBEN2", "SPÄT OBEN1", "FRÜH OBEN2", "FRÜH OBEN1", "FRÜH UNTEN", "SPÄT UNTEN", "FREI", "URLAUB", "KRANK"};
option sind die einträge der combobox
 

Bluedaishi

Bekanntes Mitglied
colSchicht1 ist die column in der will ich die schicht setzen will früh spät usw
vieleicht hab ich mich zu blöd ausgedrückt :-(
 

Bluedaishi

Bekanntes Mitglied
Java:
colSchicht1.setCellFactory(ComboBoxTableCell.forTableColumn(option));
        colSchicht1.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Objekte, String>>() {
            @Override
            public void handle(CellEditEvent<Objekte, String> event) {
                System.out.println("Value : " + event.getNewValue() + "  " + event.getOldValue());
                TablePosition<Objekte, String> pos = event.getTablePosition();
                Object newSchicht = event.getNewValue();
                int row = pos.getRow();

            }
        });
 

Bluedaishi

Bekanntes Mitglied
die auswahlen der combobox stehen auch in den zellen der spalten . aber wenn ich hinterher mit einer for schleife uber die spalte laufe
bekomme ich immer null werte zurück anstatt die einträge
 

dzim

Top Contributor

mihe7

Top Contributor
Der Methodenname ist auch strange.


die auswahlen der combobox stehen auch in den zellen der spalten . aber wenn ich hinterher mit einer for schleife uber die spalte laufe
bekomme ich immer null werte zurück anstatt die einträge
Soweit waren wir doch schon. Entweder keinen setOnEditCommit verwenden oder dort die Einträge Deiner Liste selbst aktualisieren.
 

mihe7

Top Contributor
Java:
import javafx.application.Application;
import javafx.beans.property.*;
import javafx.collections.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.*;
import javafx.scene.layout.VBox;
import javafx.scene.media.AudioClip;
import javafx.stage.Stage;

public class Main extends Application {

    public static class Person {
        private StringProperty name;
        private StringProperty firstName;

        public Person(String name, String firstName) {
            this.name = new SimpleStringProperty(name);
            this.firstName = new SimpleStringProperty(firstName);
        }

        public StringProperty nameProperty() {
            return name;
        }

        public StringProperty firstNameProperty() {
            return firstName;
        }
    }

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Personen");

        TableView<Person> tv = createPersonTable(newNameList());
        tv.setItems(newPersonList());

        Button button = new Button("Print2Console");
        button.setOnAction(e -> tv.getItems().stream()
            .map(Person::nameProperty)
            .map(StringProperty::get)
            .forEach(System.out::println));


        VBox panel = new VBox();
        panel.getChildren().add(tv);
        panel.getChildren().add(button);                

        Scene scene = new Scene(panel, 200, 200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private TableView<Person> createPersonTable(ObservableList<String> nameList) {
        TableView<Person> tv = new TableView<>();
        tv.setEditable(true);
        TableColumn<Person,String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(cdf -> cdf.getValue().nameProperty());
        nameColumn.setCellFactory(ComboBoxTableCell.forTableColumn(nameList));

        TableColumn<Person,String> firstNameColumn = new TableColumn<>("Vorname");
        firstNameColumn.setCellValueFactory(cdf -> cdf.getValue().firstNameProperty());

        tv.getColumns().add(nameColumn);
        tv.getColumns().add(firstNameColumn);

        return tv;
    }

    private ObservableList<Person> newPersonList() {
        ObservableList<Person> result = FXCollections.observableArrayList();
        for (int i = 0; i < 10; i++) {
            String name = String.format("Name %d", i+1);
            String firstName = String.format("Vorname %d", i+1);
            result.add(new Person(name, firstName));
        }
        return result;
    }

    private ObservableList<String> newNameList() {
        ObservableList<String> result = FXCollections.observableArrayList();
        for (int i = 10; i < 20; i++) {
            result.add(String.format("Name %d", i+1));
        }
        return result;
    }
}
 

mihe7

Top Contributor
Und hier noch mit Handler. Durch das Auskommentieren der Zeile wird der Wert nicht übernommen. Wenn Du den Kommentar entfernst, schon.

Java:
    private TableView<Person> createPersonTable(ObservableList<String> nameList) {
        TableView<Person> tv = new TableView<>();
        tv.setEditable(true);
        TableColumn<Person,String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(cdf -> cdf.getValue().nameProperty());
        nameColumn.setCellFactory(ComboBoxTableCell.forTableColumn(nameList));

        nameColumn.setOnEditCommit(e -> {
            int row = e.getTablePosition().getRow();
//            tv.getItems().get(row).nameProperty().set(e.getNewValue());
        });

        TableColumn<Person,String> firstNameColumn = new TableColumn<>("Vorname");
        firstNameColumn.setCellValueFactory(cdf -> cdf.getValue().firstNameProperty());

        tv.getColumns().add(nameColumn);
        tv.getColumns().add(firstNameColumn);

        return tv;
    }
 

httpdigest

Top Contributor
Das nennt sich "Lambda Expression" und:
Java:
nameColumn.setCellValueFactory(cdf -> cdf.getValue().nameProperty());
ist in diesem Fall ultrakrasser syntaktischer Zucker für:
Java:
nameColumn.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() {
  @Override
  public ObservableValue<String> call(CellDataFeatures<Person, String> cdf) {
    return cdf.getValue().nameProperty();
  }
});
 

Bluedaishi

Bekanntes Mitglied
Hab nun den Fehler gefunden er lag in der klasse Objekte dort war ein Fehler in der Setter bzw dort war die variable falsch hinterlegt ........ TALENT :)
 

Bluedaishi

Bekanntes Mitglied
Jetzt noch kurz eine andere Frage wie bekomme ich das hin das ich den Namen der Spalte nach dem User aus einer Datenbank bennnen kann wie auch die Anzahl der Spalten
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 19
M JavaFX TableView nur erste Zeile editable machen und gelb markieren AWT, Swing, JavaFX & SWT 0
Encera TableView Zeilen als Spalten im SceneBuilder AWT, Swing, JavaFX & SWT 0
T TableView Button onAction AWT, Swing, JavaFX & SWT 3
mrbody234 ArrayList<Message> in eine TableView visualisieren AWT, Swing, JavaFX & SWT 2
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
I JavaFX Zellen in Tableview editieren AWT, Swing, JavaFX & SWT 0
A TableView updatet sich nicht AWT, Swing, JavaFX & SWT 3
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
W TableView füllen AWT, Swing, JavaFX & SWT 18
missy72 JavaFX TableView / IconView mit MousEvent AWT, Swing, JavaFX & SWT 7
missy72 JavaFX Performance / ImageView in TableView über TimeLine AWT, Swing, JavaFX & SWT 1
T TableView aktualisieren AWT, Swing, JavaFX & SWT 1
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
T TableView Zeilen einfärben AWT, Swing, JavaFX & SWT 13
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
W JavaFX TableView aktualisieren AWT, Swing, JavaFX & SWT 1
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
B JavaFX TableView-Zellen sollen automatisch so groß wie der größte Inhalt sein AWT, Swing, JavaFX & SWT 6
D JavaFX Nullpointerexception wegen TableView AWT, Swing, JavaFX & SWT 2
S Alternative JavaFX TableView AWT, Swing, JavaFX & SWT 1
L JavaFX Tableview row callback AWT, Swing, JavaFX & SWT 0
G Bekomme ResultSet mittels ObservableList nicht ins TableView AWT, Swing, JavaFX & SWT 25
S JavaFX JavaFX TableView scrollen färbt falsche Zeilen AWT, Swing, JavaFX & SWT 1
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J JavaFx TableView mit CheckBox AWT, Swing, JavaFX & SWT 4
P JavaFX TableView Zelle markieren AWT, Swing, JavaFX & SWT 3
L JavaFX Tableview Datamodel AWT, Swing, JavaFX & SWT 2
M TableView Zeile hinzufügen AWT, Swing, JavaFX & SWT 5
J TableView Update/Refresh CPU AWT, Swing, JavaFX & SWT 2
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
J Tableview - kann man mit Enter die Zellen wechseln AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Dynamisch TableView Spalten erstellen AWT, Swing, JavaFX & SWT 4
M TableView + Datenbank Aktualisierung AWT, Swing, JavaFX & SWT 4
B TableView als PDF speichern AWT, Swing, JavaFX & SWT 8
B JavaFX TableView eine Zeile markieren AWT, Swing, JavaFX & SWT 5
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
L JavaFX TableView Column Sortierung AWT, Swing, JavaFX & SWT 1
L Java FX Keine Anzeige Im Tableview AWT, Swing, JavaFX & SWT 4
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
L JavaFX TableView mit Aktionenbuttons AWT, Swing, JavaFX & SWT 1
C JavaFX Edit TableView in Verbindung mit SceneBuilder AWT, Swing, JavaFX & SWT 1
C JavaFX ProGuard -> TableView kein Inhalt AWT, Swing, JavaFX & SWT 7
J SceneBuilder TableView Checkbox AWT, Swing, JavaFX & SWT 1
J JavaFX Elemente werden nicht zu TableView hinzugefügt AWT, Swing, JavaFX & SWT 3
F JavaFX (Tree)TableView korrekt drucken AWT, Swing, JavaFX & SWT 1
robinab JavaFX TableView column resize nach setItems() AWT, Swing, JavaFX & SWT 0
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
S JavaFx - ausgewählte Rows in Arraylist (Tableview) AWT, Swing, JavaFX & SWT 4
S JavaFX - Populate TableView AWT, Swing, JavaFX & SWT 2
N JavaFX TableView aus Map AWT, Swing, JavaFX & SWT 2
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
B JavaFX TableView aus Collection befüllen AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
zhermann TableView die zweite AWT, Swing, JavaFX & SWT 7
H Java FX List<AlbumsBean> in FXML TableView AWT, Swing, JavaFX & SWT 37
E JavaFX TableView mit Zeilenumbruch in Zellen AWT, Swing, JavaFX & SWT 5
zhermann TableView wird nicht gefüllt AWT, Swing, JavaFX & SWT 14
M JavaFX JavaFX ResultSet in TableView ausgeben AWT, Swing, JavaFX & SWT 2
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
M JavaFX berechneten Wert in TableView schreiben AWT, Swing, JavaFX & SWT 1
K JavaFX Message in TableView AWT, Swing, JavaFX & SWT 2
H TableView mit variabler Anzahl Spalten AWT, Swing, JavaFX & SWT 2
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
L JavaFX TableView mit Excelfunktion AWT, Swing, JavaFX & SWT 1
D JavaFX TableView AWT, Swing, JavaFX & SWT 2
L JavaFX TableView mit XYChart verbinden AWT, Swing, JavaFX & SWT 3
blazingblade JavaFX Tableview Clock Column update AWT, Swing, JavaFX & SWT 5
P JavaFX, TableView und Datenbank AWT, Swing, JavaFX & SWT 4
K TableView: 'Komplexes' Object AWT, Swing, JavaFX & SWT 11
L JavaFX TableView background transparent machen AWT, Swing, JavaFX & SWT 7
F TableCell aus TableView holen AWT, Swing, JavaFX & SWT 8
K JavaFX TableView mit Rectangle AWT, Swing, JavaFX & SWT 3
M Befüllung der einzelnen Zeilen des TableView AWT, Swing, JavaFX & SWT 3
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
N JavaFX TableView füllt nicht das gesamte ScrollPanle aus AWT, Swing, JavaFX & SWT 2
M JavaFX TableView & CSS, Rand um Tabellenkopf entfernen AWT, Swing, JavaFX & SWT 3
L JavaFX ListView oder TableView Style überschreiben? AWT, Swing, JavaFX & SWT 6
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
J JavaFX TableView - Höhe der Zeilen AWT, Swing, JavaFX & SWT 3
L JavaFX TableView mit Attributs der Modellreferenzerierung für die Spalte AWT, Swing, JavaFX & SWT 3
I JavaFX Buttons und TableView AWT, Swing, JavaFX & SWT 2
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
B Java FX TableView Zeilen mit verschiedenen Typen AWT, Swing, JavaFX & SWT 15
Z JavaFX TableView cellValueFactory für Arrays AWT, Swing, JavaFX & SWT 2
E JavaFX TableView mit Rechtsklick Zelle auswählen AWT, Swing, JavaFX & SWT 8
C (JavaFX 8) SQLite Datenbank in einem TableView darstellen AWT, Swing, JavaFX & SWT 2
D JavaFX TableView bleibt leer. AWT, Swing, JavaFX & SWT 8
M JavaFX TableView nach Spalte sortieren AWT, Swing, JavaFX & SWT 1
P JavaFX Dynamische TableView AWT, Swing, JavaFX & SWT 14
V Java FX POJO aus Datenbank in FX TableView / Best Practice AWT, Swing, JavaFX & SWT 0
P JavaFX TableView Item hinzufügen AWT, Swing, JavaFX & SWT 20
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
M JavaFX Tutorial zu Tableview AWT, Swing, JavaFX & SWT 5
C JavaFX Zugriff auf TableView AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben