Bloquée la saisie d'un JTextArea
Nanis29
Messages postés
62
Statut
Membre
-
Nanis29 Messages postés 62 Statut Membre -
Nanis29 Messages postés 62 Statut Membre -
Bonjour,
J'aimerai pouvoir limiter la saisie de caractère d'un JtextArea.
En fait, je créé un programme dans java pour faire un insert dans oracle. Le truc c'est que j'ai un champs "commentaire" qui ne peut pas dépasser 500 caractères sinon le programme plante vu que dans mon script Oracle le comentaire es tde type varchar2(500).
J'arrive à calculer le nombre de caractères saisie sans soucis mais mon problème est que j'aimerai obligé l'utilisateur à arrêter sa saisie en bloquant toute action. C'est à dire même si il continu à taper sur le clavier, que rien ne soit pris en compte.
J'aimerai pouvoir limiter la saisie de caractère d'un JtextArea.
En fait, je créé un programme dans java pour faire un insert dans oracle. Le truc c'est que j'ai un champs "commentaire" qui ne peut pas dépasser 500 caractères sinon le programme plante vu que dans mon script Oracle le comentaire es tde type varchar2(500).
J'arrive à calculer le nombre de caractères saisie sans soucis mais mon problème est que j'aimerai obligé l'utilisateur à arrêter sa saisie en bloquant toute action. C'est à dire même si il continu à taper sur le clavier, que rien ne soit pris en compte.
A voir également:
- Bloquée la saisie d'un JTextArea
- Saisie gestuelle iphone - Guide
- Boite gmail bloquée - Guide
- Saisie vocale whatsapp - Accueil - Messagerie instantanée
- Saisie vocale sms - Guide
- Souris ordinateur bloquée - Guide
6 réponses
Salut,
Tu laisses l'utilisateur terminer sa saisie...
Supposons que le résultat est dans String saisie :
boolean encore = true;
// simulation de la saisie
String saisie = "1234567890abcdefghijklmnopqrstuvwxyz 1234567890abcdefghijklmnopqrstuvwxyz";
while (encore)
{
encore = false;
// ici on doit avoir la saisie
if (saisie.length() > 70)
{
System.out.println("Vous avez saisi " + saisie.length() + " caracteres\n"
+ "Vous devez saisir de nouveau 70 caracteres maximum!\n\n");
saisie = "1234567890abcdefghijklmnopqrstuvwxyz"; // pour simuler la nouvelle saisie
encore = true;
}
}
// OU BIEN ARBITRAIREMENT:
encore = true;
saisie = "1234567890abcdefghijklmnopqrstuvwxyz 1234567890abcdefghijklmnopqrstuvwxyz";
while (encore)
{
encore = false;
// ici on doit avoir la saisie
if (saisie.length() > 70)
{
System.out.println("Vous avez saisi " + saisie.length() + " caracteres\n"
+ "Votre saisie sera tronquee a 70 caracteres!\n\n");
saisie = saisie.substring(0, 70);
}
// MAIS JE DOUTE QUE CE SOIT LA SOLUTION
}
System.out.println("Vous avez saisi: " + saisie + "\n\n");
Ma boucle n'est pas tout a fait juste a cause de la simu de saisie car cette saisie doit etre dans la boucle...
Cordialement,
Dan
Tu laisses l'utilisateur terminer sa saisie...
Supposons que le résultat est dans String saisie :
boolean encore = true;
// simulation de la saisie
String saisie = "1234567890abcdefghijklmnopqrstuvwxyz 1234567890abcdefghijklmnopqrstuvwxyz";
while (encore)
{
encore = false;
// ici on doit avoir la saisie
if (saisie.length() > 70)
{
System.out.println("Vous avez saisi " + saisie.length() + " caracteres\n"
+ "Vous devez saisir de nouveau 70 caracteres maximum!\n\n");
saisie = "1234567890abcdefghijklmnopqrstuvwxyz"; // pour simuler la nouvelle saisie
encore = true;
}
}
// OU BIEN ARBITRAIREMENT:
encore = true;
saisie = "1234567890abcdefghijklmnopqrstuvwxyz 1234567890abcdefghijklmnopqrstuvwxyz";
while (encore)
{
encore = false;
// ici on doit avoir la saisie
if (saisie.length() > 70)
{
System.out.println("Vous avez saisi " + saisie.length() + " caracteres\n"
+ "Votre saisie sera tronquee a 70 caracteres!\n\n");
saisie = saisie.substring(0, 70);
}
// MAIS JE DOUTE QUE CE SOIT LA SOLUTION
}
System.out.println("Vous avez saisi: " + saisie + "\n\n");
Ma boucle n'est pas tout a fait juste a cause de la simu de saisie car cette saisie doit etre dans la boucle...
Cordialement,
Dan
Ps,
Bien entendu j'ai limité la longueur à 70 pour simplifier et ne pas avoir à définir String saisie = "qwertyuiop....plus de 500 caractères.....";
Dan
Bien entendu j'ai limité la longueur à 70 pour simplifier et ne pas avoir à définir String saisie = "qwertyuiop....plus de 500 caractères.....";
Dan
Oui ben du coup c'est à peu près ce que j'ai fait, j'affiche le nombre de caractères restant au fur et a mesure de la saisie et je lui affiche un message lorsqu'il arrive à 0, pour le prévenir que le texte sera tronqué, en faisant un substract par la suite
Par contre j'ai un petit soucis, c'est que mon message l'avertissant qu'il est à 0 caractère s'affiche 2 fois de rang, et après il peut recommencer à saisir si il veut.
Tu saurai pourquoi il s'affiche 2 fois de suite ?
le code :
longueurCom = txtCommentaires.getText().length();
carRestant = (500 - longueurCom);
lblCarRestant.setText(String.valueOf(carRestant)+"/500");
if (carRestant <= 10){
lblCarRestant.setForeground(Color.red);
}else {
lblCarRestant.setForeground(Color.black);
}
if (txtCommentaires.getText().length() < 500) {
JOptionPane.showMessageDialog(this, "Comentaires trop long " +
"(max. 500 caractères)", "Erreur commentaires",
JOptionPane.ERROR_MESSAGE);
comment.setForeground(Color.red);
}
Par contre j'ai un petit soucis, c'est que mon message l'avertissant qu'il est à 0 caractère s'affiche 2 fois de rang, et après il peut recommencer à saisir si il veut.
Tu saurai pourquoi il s'affiche 2 fois de suite ?
le code :
longueurCom = txtCommentaires.getText().length();
carRestant = (500 - longueurCom);
lblCarRestant.setText(String.valueOf(carRestant)+"/500");
if (carRestant <= 10){
lblCarRestant.setForeground(Color.red);
}else {
lblCarRestant.setForeground(Color.black);
}
if (txtCommentaires.getText().length() < 500) {
JOptionPane.showMessageDialog(this, "Comentaires trop long " +
"(max. 500 caractères)", "Erreur commentaires",
JOptionPane.ERROR_MESSAGE);
comment.setForeground(Color.red);
}
Me suis trompée je t'ai mis le code actuel ^^
longueurCom = txtCommentaires.getText().length();
carRestant = (500 - longueurCom);
lblCarRestant.setText(String.valueOf(carRestant)+"/500");
if (carRestant <= 10){
lblCarRestant.setForeground(Color.red);
}else if (carRestant ==0){
JOptionPane.showMessageDialog(this, "caractères maximum atteint, le reste de la saisie sera tronquée lors de l'enregistrement", "Erreur commentaires",
JOptionPane.ERROR_MESSAGE);
}
}else {
lblCarRestant.setForeground(Color.black);
}
Voila celui de départ, ou j'affiche un message lorsqu"il arrive à 0 caractère. Le message s'affiche 2 fois de suite et ensuite il peut continuer sa sasie, je comprend pas pourquoi.
De plus, si il fait un copié collé, et que le nombre de caractères dépasse le 0, alors aucun message ne s'affiche...
longueurCom = txtCommentaires.getText().length();
carRestant = (500 - longueurCom);
lblCarRestant.setText(String.valueOf(carRestant)+"/500");
if (carRestant <= 10){
lblCarRestant.setForeground(Color.red);
}else if (carRestant ==0){
JOptionPane.showMessageDialog(this, "caractères maximum atteint, le reste de la saisie sera tronquée lors de l'enregistrement", "Erreur commentaires",
JOptionPane.ERROR_MESSAGE);
}
}else {
lblCarRestant.setForeground(Color.black);
}
Voila celui de départ, ou j'affiche un message lorsqu"il arrive à 0 caractère. Le message s'affiche 2 fois de suite et ensuite il peut continuer sa sasie, je comprend pas pourquoi.
De plus, si il fait un copié collé, et que le nombre de caractères dépasse le 0, alors aucun message ne s'affiche...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Je n'ai pas suffisamment de code pour voir pourquoi le message d'erreur s'affiche 2 fois.
C'est peut-être ce this, il faudrait essayer en le remplacant par null, mais j'avoue que ce n'est pas certain...
JOptionPane.showMessageDialog(this, "caractères maximum atteint, le reste de la saisie sera tronqué lors de l'enregistrement", "Erreur commentaires",
JOptionPane.ERROR_MESSAGE);
Quant au copier coller, en testant if (longueurCom > 500) après la validation (touche Intro du clavier, ou click d'un bouton, je ne sais pas comment c'est programmé...)
OU peut-être tout bonnement en entrant un espace (ou un complément au commentaire "collé") après avoir collé et en testant normalement comme si on avait tout saisi.
Remarque:
pour éviter que la saisie soit possible après le message d'erreur: ajouter nom_JTextArea.setEditable(false);
désolé j'ai oublié son nom!
Cordialement,
Dan
Je n'ai pas suffisamment de code pour voir pourquoi le message d'erreur s'affiche 2 fois.
C'est peut-être ce this, il faudrait essayer en le remplacant par null, mais j'avoue que ce n'est pas certain...
JOptionPane.showMessageDialog(this, "caractères maximum atteint, le reste de la saisie sera tronqué lors de l'enregistrement", "Erreur commentaires",
JOptionPane.ERROR_MESSAGE);
Quant au copier coller, en testant if (longueurCom > 500) après la validation (touche Intro du clavier, ou click d'un bouton, je ne sais pas comment c'est programmé...)
OU peut-être tout bonnement en entrant un espace (ou un complément au commentaire "collé") après avoir collé et en testant normalement comme si on avait tout saisi.
Remarque:
pour éviter que la saisie soit possible après le message d'erreur: ajouter nom_JTextArea.setEditable(false);
désolé j'ai oublié son nom!
Cordialement,
Dan