Skip to content
Snippets Groups Projects
Commit 02d29a97 authored by Matias Mennecart's avatar Matias Mennecart
Browse files

Fix exception while trying to write text into double or integer spinner

parent 306f6f35
Branches
Tags
No related merge requests found
......@@ -12,11 +12,11 @@ import javafx.stage.Stage;
import java.io.IOException;
import java.lang.reflect.Array;
import java.text.ParseException;
import java.time.temporal.Temporal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.UnaryOperator;
import java.util.regex.Pattern;
/**
* Controlleur pour le FXML add-data-stage, pour ajouter une nouvelle donnée
......@@ -67,6 +67,22 @@ public class AddDataController {
0.5
);
doubleSpinner.setValueFactory(valueFactory);
TextField editor = doubleSpinner.getEditor();
// On bloque la siasi de texte autre que des chiffres dans le spinner
Pattern validDoublePattern = Pattern.compile("-?\\d*(\\.\\d*)?");
UnaryOperator<TextFormatter.Change> filter = change -> {
String newText = change.getControlNewText();
if (validDoublePattern.matcher(newText).matches()) {
return change;
}
return null;
};
TextFormatter<String> textFormatter = new TextFormatter<>(filter);
editor.setTextFormatter(textFormatter);
hbox.getChildren().add(doubleSpinner);
components.add(doubleSpinner);
}
......@@ -81,6 +97,22 @@ public class AddDataController {
1
);
integerSpinner.setValueFactory(valueFactory);
TextField editor = integerSpinner.getEditor();
Pattern validIntegerPattern = Pattern.compile("-?\\d*");
UnaryOperator<TextFormatter.Change> filter = change -> {
String newText = change.getControlNewText();
if (validIntegerPattern.matcher(newText).matches()) {
return change;
}
return null;
};
// Appliquer le TextFormatter au TextField du Spinner
TextFormatter<String> textFormatter = new TextFormatter<>(filter);
editor.setTextFormatter(textFormatter);
hbox.getChildren().add(integerSpinner);
components.add(integerSpinner);
}
......@@ -130,16 +162,27 @@ public class AddDataController {
return null;
}).toArray();
System.out.println("State in");
System.out.println(Arrays.toString(values));
ClassificationModel.getClassificationModel().ajouterDonnee(values);
}catch (IllegalArgumentException e){
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Erreur");
alert.setHeaderText(null);
alert.setContentText(e.getMessage());
alert.showAndWait();
}catch (NumberFormatException e) {
openErrorStage(e, "Erreur, les données ne respecte pas le format specifié");
}catch (IllegalArgumentException e) {
openErrorStage(e);
}
stage.close();
}
private void openErrorStage(Exception e, String message) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Erreur - " + e.getClass());
alert.setHeaderText(null);
alert.setContentText(message);
alert.showAndWait();
}
private void openErrorStage(Exception e) {
openErrorStage(e, e.getMessage());
}
}
package fr.univlille.sae.classification.model;
import java.text.ParseException;
import java.util.Arrays;
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment