Je développe une application utilisant JavaFX dans laquelle je crée TextFields dynamique à l'intérieur d'un GridPane et il y a un bouton qui est désactivé par défaut comme ceci:JavaFx: Comment comparer les valeurs de TextFields créées dynamiquement à l'intérieur de GridPane?
donc ce que je veux est si la colonne 1 les valeurs de TextField sont inférieures à la colonne 3 valeurs TextField, bouton doit être activé pour comme ceci:
Mais que dire si l'un de la colonne 3 valeur TextField devient inférieure à la colonne 1 valeur TextField de même ligne, il devrait diSAb bouton le et montrer que la frontière TextField spécifique de couleur rouge et lorsque la souris en vol stationnaire au-dessus de ce champ devrait afficher un avertissement:
Je crée TextField comme ceci:
public static GridPane table(int rows){
GridPane table = new GridPane();
for(int i=0; i<rows; i++){
TextField textField1 = new JFXTextField();
textField1.setAlignment(Pos.CENTER);
TextField textField2 = new JFXTextField();
textField2.setAlignment(Pos.CENTER);
TextField textField3 = new JFXTextField();
textField3.setAlignment(Pos.CENTER);
//add them to the GridPane
table.add(textField1, 0, i+1);
table.add(textField2, 1, i+1);
table.add(textField3, 2, i+1);
}
return table;
}
Après que je « m créer une autre méthode pour renvoyer le composant de la table à la ligne spécifique et de la colonne comme suit:
public static Node getComponent (int row, int column, GridPane table) {
for (Node component : table.getChildren()) { // loop through every node in the table
if(GridPane.getRowIndex(component) == row &&
GridPane.getColumnIndex(component) == column) {
return component;
}
}
return null;
}
I essayé de faire de ce type b ut il ne fonctionne pas (ici je convertir des valeurs en chaîne et en comparant juste pour le chèque):
private boolean isTextEqual(GridPane table, Button button){
for(Node node : table.getChildren()){
if(node instanceof TextField){
for(int i=1 ; i<=ComboBox().getValue(); i++){
String str = ((TextField)DynamicGridpanes.getComponent (i, 0, table)).getText();
((TextField)DynamicGridpanes.getComponent (i, 2, table)).textProperty().addListener((obs, old, newV)->{
if(newV.toString()==str){
button.setDisable(false);
}
else{
button.setDisable(true);
}
});
}
}
}
return true;
}
Avez-vous toujours le '' DatePicker' et checkbox' dans votre table? – Yahya
Oui @Yahya j'ai. Je l'ai posté comme pour simplifier la question – Junaid
Donc, fondamentalement, vous avez trois colonnes de 'TextFields' (suivis les uns des autres) et les' CheckBoxs' puis les 'DatePickers'? Et chaque colonne 'TextField' est-elle différente dans' GridPane'. Combien de 'GridPane' avez-vous? – Yahya