J'ai vérifié la vérification de l'entrée dans un JTextField
mais d'après ce que je peux voir, il est seulement possible de vérifier si l'entrée est string
, integer
ou digit
. Quelqu'un pourrait-il suggérer comment je pourrais vérifier la valeur spécifique du chiffre? Par exemple, si elle est dans la plage 0.5 - 1
. Je vous remercie.Confirmer si un JTextField contient des valeurs 0.5-1?
Répondre
Une façon de le faire serait d'analyser votre valeur du champ de texte à un flotteur comme celui-ci
float tfValue = Float.parseFloat(jTextField1.getText());
Ensuite, vous pouvez vérifier si modulo 1 est égal à 0. Si cela est vrai, la valeur est un nombre entier .
if (tfValue % 1 == 0) {
System.out.println("is an integer");
}
else System.out.println("is a float");
Si le' String' renvoyé par 'JTextField.getText()' contient autre chose que des chiffres numériques, l'analyse retournera une 'NumberFormatException'. Si vous deviez approcher cette méthode, vous auriez besoin d'utiliser un RegEx avant l'analyse. –
essayer cela, il est peut-être une aide pour vous
JTextField field = new JTextField();
field.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
String text = ((JTextField)evt.getSource()).getText();
if (!(evt.getKeyChar() >= '0' && evt.getKeyChar() <= '9')) {
// it is number
}
else if (!(evt.getKeyChar() >= 'a' && evt.getKeyChar() <= 'Z')) {
// it is char a-Z
}
else {
// it others
}
}
});
mais la meilleure façon pour les nombres est d'utiliser JFormattedTextField
avec masque spécifiées
En règle générale, vous n'écoutez pas les événements de clé/souris bruts sur les composants de texte mais sur le document sous-jacent. –
@Abihabi 87 j'ai besoin spécifiquement d'avoir une sorte de validation que l'utilisateur fait entrée entre 0.5 et 1 si ce n'est pas le cas alors ne le laissez pas aller plus loin – Mapet
Deux façons possibles:
Parse le contenu JTextField à une variable double et utilisez une instruction simple if. Vous devez utiliser un bloc try catch pour gérer une exception NumberFormatException possible (si votre texte ne peut pas être converti en double).
Exemple:
double value = 0;
try {
value = Double.parseDouble (yourTextField.getText());
}
catch (NumberFormatException e) {
// Handle exception ...
}
if (value >= 0.5 && value <= 1) {
// ...
}
else {
// ...
}
Vous pouvez également vérifier si votre texte correspond à une donnée (smart) expression régulière. Considérez le modèle suivant (vous avez besoin de deux barres obliques inverses pour échapper un point et d'autres caractères spéciaux): (1 (\. 0 *)? | 0? \. [5-9] [0-9] *)
ce modèle accepte 1 (ou 1 suivi de séparateur décimal et un nombre quelconque d'occurrences de zéros) ou un nombre compris entre 0,5 (cette expression rationnelle permet » 0,5") et 0,99999 ...
Exemple (en utilisant java.util.regex.Pattern):
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.4")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0..5")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.111")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.5")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.5000543")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "0.50+")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1.0")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1.0000")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "1")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", "21")); // -> false
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", ".56256")); // -> true
System.out.println (Pattern.matches ("(1(\\.0*)?|0?\\.[5-9][0-9]*)", ".46256")); // -> false
Jetez un oeil à [JFormattedTextField] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JFormattedTex tField.html), ce [site] (http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html) aide à expliquer comment l'utiliser. –
merci, celui-ci m'aidera j'espère – Mapet
'SpinnerModel model = new SpinnerNumberModel (.5, .5, 1, .01); JSpinner numberRange = new JSpinner (model); ' –