2016-07-27 13 views
0

akzeptiert Das ist meine Klasse für Tabellenansicht (nicht FX-Klasse seiner meine eigenen für Daten)JavaFX Tabelle keine Daten

class tableView { 

SimpleIntegerProperty profit; 
SimpleDoubleProperty probabilty; 

public tableView(int profit, double prob) { 
    this.profit = new SimpleIntegerProperty(profit); 
    this.probabilty = new SimpleDoubleProperty(prob); 
} 
} 

und Mein Code für Event-Handler und andere Controller ist:

Random r = new Random(); 
    int noOfStream = Integer.parseInt(steamsize.getText()); 
    double sellingPrice = Double.valueOf(sell.getText()); 
    double costPrice = Double.valueOf(cost.getText()); 
    int quantity = Integer.valueOf(Quantity.getText()); 
    double discountPrice = Double.valueOf(discount.getText()); 
    int randomStart = Integer.parseInt(RandStart.getText()); 
    int randomEnd = Integer.parseInt(RandEnd.getText()); 

    for (int i = 0; i < noOfStream; i++) { 
     int dem = r.nextInt(randomEnd - randomStart) + randomStart; 
     int profit = profitCacl(sellingPrice, costPrice, quantity, discountPrice, dem); 
     double prob = cal.probCal(profitArray, profit); 
     // System.out.println(profit); 
     // System.out.println(prob); 
     if (prob == 0.1) { 
      profitArray.add(new tableView(profit, prob)); 
     } 
    } 

} 

@Override 
public void initialize(URL url, ResourceBundle rb) { 

    cal = new methodsForCal(); 
    choice.setItems(FXCollections.observableArrayList(
      "Normal", 
      "Poison", 
      "Uniform" 
    )); 

    Profit.setCellValueFactory(new PropertyValueFactory("profit")); 
    Probabilty.setCellValueFactory(new PropertyValueFactory("probabilty")); 

    profitArray = FXCollections.observableArrayList(); 

    tableForReading.setItems(profitArray); 

} 

Jetzt ist mein Problem, dass meine Daten nicht in die Daten eingefügt werden! wie es auf der Konsole so gut wie ich will drucken!

Antwort

0

PropertyValueFactory erfordert, dass die Elementklasse Methoden enthält, die die Eigenschaft oder die Getter für den Eigenschaftswert zurückgeben. Sie müssen die Methoden profitProperty und probabiltyProperty zu tableView hinzufügen, die die Eigenschaften zurückgeben.

Alternativ könnten Sie Ihre eigene cellValueFactory s verwenden:

// assuming TableColumn declarations with type parameters 
Profit.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<tableView, Number>, ObservableValue<Number>>() { 

    @Override 
    public ObservableValue<Number> call(TableColumn.CellDataFeatures<tableView, Number> param) { 
     return param.getValue().profit; 
    } 
}); 
Probabilty.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<tableView, Number>, ObservableValue<Number>>() { 

    @Override 
    public ObservableValue<Number> call(TableColumn.CellDataFeatures<tableView, Number> param) { 
     return param.getValue().probability; 
    } 
}); 

Modus Infos finden Sie hier: https://docs.oracle.com/javase/8/javafx/user-interface-tutorial/table-view.htm

+0

Oder benutzen Sie einfach nicht 'PropertyValueFactory', natürlich ... –

+0

lembda Ausdruck Fehler ist gegeben, wenn ich Ihren Weg @fabian verwenden –

+0

Lambda-Ausdruck nicht hier erwartet –