Hi,
also das läuft aktuell wie folgt ab.
kurzfassung
1. TableView repräsentiert den Inhalt einer Arrayliste eines Vorrates (stock)
2. Tabellemelement index = index in Arrayliste (stock)
3. Bei Auswahl von Zeile nehme ich mir den tabellenindex um damit auf Arrayliste zuzugreifen um darüber die gewünschte Operation (löschen) auszuführen
4. für Punkt 3 gibt es die Cardengine, die diese Operation auf dieser Arrayliste ausführt
5. Wenn Operation ausgeführt ist, wird diese veränderte Arrayliste wieder an Tableview gegeben und aktualisiert.
1. Ich befülle die Tabelle beim öffnen des Dialogs wie folgt :
[CODE lang="java" title="Füllen von tabelle und setzen von ChangeListener"]
private void loadStock() {
try {
stock = productCartDAO.loadProducts();
} catch (Exception e) {
e.printStackTrace();
}
bezeichStockColumn.setCellValueFactory(new PropertyValueFactory<>("bezeichnung"));
anzahlStockColumn.setCellValueFactory(new PropertyValueFactory<>("anzahl"));
preisStockColumn.setCellValueFactory(new PropertyValueFactory<>("preisText"));
stockTable.setItems(stock);
TableView.TableViewSelectionModel<ProductCart> selectionModelStockTable = stockTable.getSelectionModel();
selectionModelStockTable.setSelectionMode(SelectionMode.SINGLE);
ObservableList<Integer> selectedIndicesStockTable = selectionModelStockTable.getSelectedIndices();
selectedIndicesStockTable.addListener((ListChangeListener<Integer>) change -> {
int index = (int) (change.getList().toArray()[0]);
selectedProductId = stock.get(index).getProdId();
anzahl = stock.get(index).getAnzahl();
prodAnzahlTextField.setText(String.valueOf(anzahl));
prodHinzuButton.setDisable(false);
});
}[/CODE]
2. Beim auswählen von Zeile und klicken von Button soll die Zeile entfernt werden und in eine andere Tabelle eingefügt werden
Das heißt die Tabellen haben ihr Äquivalent in Arraylisten stock und cart
Das cartEngine-Objekt enthält die komplette Arrayliste mit allen Produktobjekten aus dem stock und der leeren Liste aus dem cart.
Die Methode addSelectedItemToCart führt quasi aus, dass das ausgewählte Tabellenelement (Auswahlindex Tabelle) in der stock-Arrayliste entfernt wird und in der Card-Arrayliste eingefügt wird
[CODE=java]private void insertItemInCart() {
int tableItemCount = 0;
int itemCount = 0;
String test = prodAnzahlTextField.getText();
if(prodAnzahlTextField.getText().length() > 0 && !prodAnzahlTextField.getText().isEmpty())
itemCount = Integer.parseInt(prodAnzahlTextField.getText());
tableItemCount = cartEngine.getItemCountFromArticleInStock(selectedProductId);
if(cartEngine.isItemStillInStock(selectedProductId)>=0) {
int selectedIndexFromId = cartEngine.getListIndexFromArticleIdInStock(selectedProductId);
cartEngine.addSelectedItemToCart(selectedIndexFromId, itemCount); //Auswahl aus Tabelle soll in repäsentativen Arraylisten verschoben werden
updateCartTable();
updatestocktable();
}
}[/CODE]
3. Aktualisierungen der Stocktabelle mit dem Inhalt der von artEngine.addSelectedItemToCart veränderten stock-Arrayliste
[CODE=java]
private void updatestocktable() {
ArrayList<ProductCart> stockItemList = cartEngine.getStock(); //Beziehen der neuen Liste, da ein Element entfernt wurde
bezeichStockColumn.setCellValueFactory(new PropertyValueFactory<>("bezeichnung"));
anzahlStockColumn.setCellValueFactory(new PropertyValueFactory<>("anzahl"));
preisStockColumn.setCellValueFactory(new PropertyValueFactory<>("preisText"));
ObservableList<ProductCart> stockItemObservableList = FXCollections.observableArrayList(stockItemList);
stockTable.setItems(stockItemObservableList);
}[/CODE]
Ich hoffe, ich konnte mich verständlich machen. 
VG Georg