Hallo, ich habe eine TableView mit Produkten drin. Die Produkte sind in einer Arraylist und werden dann in der TableView geladen. Das funktioniert auch bei der Initialisierung der TableView. Wenn ich aber mit einem Button ein neues Produkt erstellen möchte (Attribute werden in Textfelder geschrieben), wird das neue Produkt auch in der Arraylist gespeichert aber nicht auf der TableView angezeigt. Ich weiß einfach nicht was ich da falsch mache.
table.getItems().clear();
table.getItems().addAll(products);
table.refresh();
habe ich schon ausprobiert, aber da geht auch nicht. ._.
Ich hoffe jemand kann mir helfen
MfG
table.getItems().clear();
table.getItems().addAll(products);
table.refresh();
habe ich schon ausprobiert, aber da geht auch nicht. ._.
Ich hoffe jemand kann mir helfen
MfG
Java:
public class TableController implements Initializable {
@FXML
protected TableView<Products> table = new TableView<>();
protected ArrayList<Products> products = new ArrayList<>();
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
TableColumn<Products, Integer> id = new TableColumn<>("ID");
id.setMinWidth(100);
id.setCellValueFactory(new PropertyValueFactory<>("id"));
id.setSortable(false);
TableColumn<Products, String> name = new TableColumn<>("Name");
name.setMinWidth(100);
name.setCellValueFactory(new PropertyValueFactory<>("name"));
name.setSortable(false);
TableColumn<Products, Double> preis = new TableColumn<>("Preis");
preis.setMinWidth(100);
preis.setCellValueFactory(new PropertyValueFactory<>("preis"));
preis.setSortable(false);
TableColumn<Products, Double> menge = new TableColumn<>("Menge");
menge.setMinWidth(100);
menge.setCellValueFactory(new PropertyValueFactory<>("menge"));
menge.setSortable(false);
TableColumn<Products, Category> kat = new TableColumn<>("Kategorie");
kat.setMinWidth(100);
kat.setCellValueFactory(new PropertyValueFactory<>("kategorie"));
kat.setSortable(false);
createProducts();
table.setItems(FXCollections.observableArrayList(products));
table.getColumns().addAll(id, name, preis, menge, kat);
}
public void createProducts() {
products.add(new Products(1, "test", 0, 3300, Category.Grafikkarte));
}
Java:
@FXML
public void produktHinzufuegen() {
if (id.getText() != "" && name.getText() != "" && preis.getText() != "" && menge.getText() != "") {
products.add(new Products(Integer.parseInt(id.getText()), name.getText(),
Integer.parseInt(preis.getText()),Double.parseDouble(menge.getText()),
Category.Notebook));
}
for (int i = 0; i < products.size(); i++) {
System.out.println(products.get(i).getName());
}
}