2016-03-28 63 views
2

如何將TableView的一列的數據添加到其他同一個表中,但執行x操作(如添加5)?如何在其他修改其值的操作中添加列數據

在我的情況下,我想添加到outTaxColumn inTaxColumn * 0.79的數據。

這裏是控制器

//Imports 

public class ControladorView implements Initializable { 

    @FXML private TableView tableViewBudget; 
    @FXML private TableColumn<Product, String> nameBudgetColumn; 
    @FXML private TableColumn<Product, Double> outTaxColumn; 
    @FXML private TableColumn<Product, Double> inTaxColumn; 
    @FXML private TableColumn<Product, Integer> quantityColumn; 

    private ObservableList<Product> budgetData; 

    @Override 
    public void initialize(URL location, ResourceBundle resources) { 

     //Budget Table 
     nameBudgetColumn.setCellValueFactory(
      new PropertyValueFactory<>("description")); 
     inTaxColumn.setCellValueFactory(
      new PropertyValueFactory<>("price")); 

     budgetData = FXCollections.observableArrayList(); 
     tableViewBudget.setItems(budgetData); 
} 

產品類:

public class Product { 
    public enum Category { 
     SPEAKER, HDD, HDD_SSD, POWER_SUPPLY, DVD_WRITER, RAM, SCREEN, 
     MULTIREADER, MOTHERBOARD, CPU, MOUSE, GPU, KEYBOARD, CASE, FAN 
    } 

    public Product(String description, double price, int stock, Category category) { 
     this.description = description; 
     this.price = price; 
     this.stock = stock; 
     this.category = category; 
    } 

    public Category getCategory() { 
     return category; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public double getPrice() { 
     return price; 
    } 

    public int getStock() { 
     return stock; 
    } 

    private final String description; 
    private final double price; 
    private final int stock; 
    private final Category category; 
} 
+0

請出示你的'Product'類 –

+0

@James_D我加入了:) –

回答

2

你可以做

outTaxColumn.setCellValueFactory(cellData -> 
    new SimpleDoubleProperty(cellData.getValue().getPrice() * 0.79).asObject()); 
+0

你能解釋一下代碼的工作原理嗎?因爲我不明白如何知道TableColumn必須採用這些值的lambda表達式。 –

+1

單元格值工廠將該行的對象映射到要顯示在單元格中的可觀察值。 'cellData.getValue()'爲您提供行的對象('Product')。 'cellData.getValue()。getPrice()'爲您提供該產品的價格,然後乘以0.79。由於您將該列聲明爲一個'TableColumn ',您需要和'ObservableValue ':將值包裝在'SimpleDoubleProperty'中給出一個'ObservableValue '和['asObject()'](http: /docs.oracle.com/javase/8/javafx/api/javafx/beans/property/DoubleProperty.html#asObject--)給出正確的類型。 –

相關問題