je suis tout à fait nouveau à JavaFX, et je voudrais votre aide pour résoudre le ci-dessous:JavaFX Tableviews - Comparer les prix et mettre en évidence les cellules
J'ai deux tableviews, et je voudrais comparer les valeurs de la colonne entre les deux et mettre en évidence la cellule de l'une des tables, si les valeurs sont différentes. (Assomption - les deux tables ont le même nombre de colonnes, ce qui limite les lignes au contenu minimal entre les tables)
ex: tableau 1 a colonne1 colonne2 colonne3 1 Amérique Newyork
tableau 2 a colonne1 colonne2 colonne3 1 Amérique Washington
La deuxième table dernière colonne doit être mis en évidence avec un TEXTFILL
J'ai ce code pseudo, ne semble pas fonctionner si
int colsize1= tableview1.getColumns().size();
int colsize2= tableview2.getColumns().size();
if(colsize1 != colsize2) {
alert("number of columns do not match, cannot be validated");
return;
}
ObservableList<ObservableList<String>> da1 = FXCollections.observableArrayList();
ObservableList<ObservableList<String>> da2 = FXCollections.observableArrayList();
da1.addAll(tableview1.getItems());
da2.addAll(tableview2.getItems());
int size = Math.min(da1.size(), da2.size());
for(int i = 0; i < size; i++) {
for (int j = 0; j < colsize1; j++) {
if(!(tableview1.getItems().get(i).get(j).equals(tableview2.getItems().get(i).get(j)))) {
String value = tableview1.getItems().get(i).get(j);
String value2 = tableview2.getItems().get(i).get(j);
int currentrow = i;
TableColumn<TableView<ObservableList<String>>, String> columns = (TableColumn) tableview2.getColumns().get(j);
columns.setCellFactory(column -> {
return new TableCell<TableView<ObservableList<String>>, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
System.out.println("item is " + item + " empty is " + empty);
if(empty){
if(value != value2){
this.setStyle("-fx-background-color : yellow");
}
}
if (!empty) {
if((value != item) && currentrow == getTableRow().getIndex()) {
// int rowindex = getTableRow().getIndex();
System.out.println(" item is " + item);
this.setText(item);
this.setTextFill(Color.RED);
this.setStyle("-fx-background-color : yellow");
}else {
this.setText(item);
}
}
}
};
});
}
}
}
}
J'ai trouvé une solution au problème donné. mon code est - –