2016-12-20 14 views
0

複数のレコード(行)をTextFieldからTableViewにどのように追加しますか?

これまでのところ、TextFieldを通じてTableViewにレコードを追加することができましたが、TextFieldの値を変更してADDボタンを押すと、以前に追加されたレコードが削除され、TableViewで新しいレコードが表示されます。
JavaFXのTableViewに複数のレコードを追加する

// Code For Inserting Records to TableView Through TextField // 

private void Add_details(){ 
    try { 
     String Customer = txtCustomer.getText().trim(); 
     String Mobile = txtMobile.getText().trim(); 
     String Item = txtItem.getText().trim(); 
     int unit_price = Integer.parseInt(txtUnitPrice.getText().trim()); 
     int qty = Integer.parseInt(txtQty.getText().trim()); 

     TableItems t = new TableItems(); 
     ObservableList <TableItems> curnt_row = FXCollections.observableArrayList(); 

     t.setCustomer(Customer); 
     t.setMobile(Mobile); 
     t.setItem(Item); 
     t.setUnit_price(String.valueOf(unit_price)); 
     t.setQty(String.valueOf(qty)); 
     t.setTotal(String.valueOf(total)); 

     curnt_row.add(t); 
     tblItems.setItems(curnt_row); 

     col_customer.setCellValueFactory(new PropertyValueFactory<>("customer")); 
     col_mobile.setCellValueFactory(new PropertyValueFactory<>("mobile")); 
     col_item.setCellValueFactory(new PropertyValueFactory<>("item")); 
     col_qty.setCellValueFactory(new PropertyValueFactory<>("qty")); 
     col_unitprice.setCellValueFactory(new PropertyValueFactory<>("unit_price")); 
     col_total.setCellValueFactory(new PropertyValueFactory<>("total")); 

    }catch (NumberFormatException e){ 
     e.printStackTrace(); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 


// CORDING FOR GET SELECTED ITEM FROM TABLEVIEW // 
// I WANT TO GET ALL ITEMS, 
// NOT ONLY SELECTED ITEM SO THAT I COULD PERFORM BATCH INSERTION 

     private void Get_table_values(){ 
      /* LAMDA EXPRESSION     */ 
     tblItems.getSelectionModel().selectedItemProperty().addListener 
      ((obs, oldSelection, newSelection) -> { 
     if (newSelection != null) { 
      TableView.TableViewSelectionModel selectionModel = tblItems.getSelectionModel(); 
      ObservableList selectedCells = selectionModel.getSelectedCells(); 
      TablePosition tablePosition = (TablePosition) selectedCells.get(0); 
      Object val = tablePosition.getTableColumn().getCellData(newSelection); 
      String S_value = val.toString(); 
     } 
    }); 
} 

答えて

0

あなたは全体itemsリストを置き換えるのではなく、単に単一の項目を追加しています。新しいリストは空になり、追加する項目はAdd_detailsメソッドで作成された項目だけです。代わりにアイテムを既存のリストを追加します。

private final ObservableList <TableItems> curnt_row = FXCollections.observableArrayList(); 

... 

// TableView initialisation 
tblItems.setItems(curnt_row); 

col_customer.setCellValueFactory(new PropertyValueFactory<>("customer")); 
col_mobile.setCellValueFactory(new PropertyValueFactory<>("mobile")); 
col_item.setCellValueFactory(new PropertyValueFactory<>("item")); 
col_qty.setCellValueFactory(new PropertyValueFactory<>("qty")); 
col_unitprice.setCellValueFactory(new PropertyValueFactory<>("unit_price")); 
col_total.setCellValueFactory(new PropertyValueFactory<>("total")); 

... 

private void Add_details(){ 
    try { 
     String Customer = txtCustomer.getText().trim(); 
     String Mobile = txtMobile.getText().trim(); 
     String Item = txtItem.getText().trim(); 
     int unit_price = Integer.parseInt(txtUnitPrice.getText().trim()); 
     int qty = Integer.parseInt(txtQty.getText().trim()); 

     TableItems t = new TableItems(); 

     t.setCustomer(Customer); 
     t.setMobile(Mobile); 
     t.setItem(Item); 
     t.setUnit_price(String.valueOf(unit_price)); 
     t.setQty(String.valueOf(qty)); 
     t.setTotal(String.valueOf(total)); 

     curnt_row.add(t); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

すべてのアイテムを取得するために、単にgetItemsを使用するか、itemsプロパティに割り当てられている知っているリストを使用して、例えば上記の例ではcurnt_rowフィールドです。

+0

私には恥です。問題が解決しました。ありがとうございました..! – Henry

関連する問題