2016-03-28 15 views
2

TableView'ın bir sütununun verilerini aynı tablodan başka, ancak x işlemini (ekleme 5 gibi) nasıl ekleyebilirim?Değerleri başka bir değere göre değiştirerek bir sütun verisi ekleme işlemi nasıl yapılır

Durumumda inTaxColumn * 0.79 verisini outTaxColumn öğesine eklemek istiyorum. İşte

denetleyicisi ise

//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); 
} 

Ürün sınıfı:

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

Eklediğim :) –

+0

@James_D gösterin lütfen yapabilirsiniz Kodun nasıl çalıştığını açıklayabilir misiniz? Çünkü, TableColumn'un değerleri alması gereken lambda ifadesini nasıl anladığını anlamıyorum. –

cevap

2

Sen

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

sizin 'Product' sınıf –

+1

Fabrika değerinin fabrika değeri, satırdaki nesneyi, hücrede görüntülenecek olan gözlenebilir bir değere eşler. cellData.getValue() ', satır için size nesne (Ürün) verir. cellexpress.getValue(). getPrice() 'size bu' Ürün' için fiyat verir, daha sonra 0,79 ile çarpın. Sütunu bir "TableColumn " olarak bildirdiğinizden ve "ObservableValue " olarak bildirdiğinizden: "SimpleDoubleProperty" değerinde sarma, size bir 'ObservableValue ' ve ['asObject()'] verir (http://docs.oracle.com/javase/8/javafx/api/javafx/beans/property/DoubleProperty.html#asObject--) doğru türü verin. –

İlgili konular