Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Un JTextArea qui déborde !!

11 réponses
Avatar
Thibaut Desmarest
Bonjour,

mon problème est le suivant :

dans mon interface graphique, je dois créer un champ de saisie pour un
élément "Adresse". Comme c'est souvent le cas, l'adresse de la personne
doit pouvoir s'écrire sur deux lignes (celà m'est imposé) et donc, adieu
le JTextField.

Je me suis donc dit qu'il fallait que j'utilise un JTextArea, mais j'ai
alors un problème, et ce malgré avoir modifié pas mal de paramètres :

Le texte peut "déborder du JTextArea". Pas graphiquement, mais disons
que l'on peut écrire plus de caractères que la taille du JTextArea ne
permet d'en afficher. Et celà m'embête, car je voudrais que quand on
arrive au bout du JTextArea la saisie se bloque. Le JTextArea ne peut il
pas faire ça tout seul normallement ???

Merci d'avance,


Thibaut

10 réponses

1 2
Avatar
no.bcausse.spam
Thibaut Desmarest wrote:

Bonjour,

mon problème est le suivant :

dans mon interface graphique, je dois créer un champ de saisie pour un
élément "Adresse". Comme c'est souvent le cas, l'adresse de la personne
doit pouvoir s'écrire sur deux lignes (celà m'est imposé) et donc, adieu
le JTextField.



2 JTextField ?

--
bruno Causse
http://perso.wanadoo.fr/othello

Avatar
Thibaut Desmarest
Causse Bruno wrote:

Thibaut Desmarest wrote:


Bonjour,

mon problème est le suivant :

dans mon interface graphique, je dois créer un champ de saisie pour un
élément "Adresse". Comme c'est souvent le cas, l'adresse de la personne
doit pouvoir s'écrire sur deux lignes (celà m'est imposé) et donc, adieu
le JTextField.




2 JTextField ?



Et non ce serait trop facile... J'y ai déjà pensé mais au dessus ils
sont pas d'accord... Il me faut vraiment une solution à ce problème.

Merci quand même,


Avatar
Isammoc
(Causse Bruno) écrivait
news:1gk40bb.1efpvix1welhtmN%:

Thibaut Desmarest wrote:

Bonjour,

mon problème est le suivant :

dans mon interface graphique, je dois créer un champ de saisie pour un
élément "Adresse". Comme c'est souvent le cas, l'adresse de la personne
doit pouvoir s'écrire sur deux lignes (celà m'est imposé) et donc, adieu
le JTextField.



2 JTextField ?


Ligne adresse et ligne adresse complémentaire, c'est ce qui est courramment
utilisé. Mais si son cahier des charges demande que ce soit un seul champ
avec plusieurs lignes, ce serait peut etre mieux un JTextArea dans un
JScrollPane, non? Ce qui permettra d'avoir toutes les infos (sur autant de
ligne que nécessaire) et de pouvoir également les afficher, sans
rendimensionnement de l'espace pour le JTextArea.

--
Isammoc


Avatar
Isammoc
2 JTextField ?



Et non ce serait trop facile... J'y ai déjà pensé mais au dessus ils
sont pas d'accord... Il me faut vraiment une solution à ce problème.

Merci quand même,


Deux autres solutions, celle que j'ai proposé en réponse à Bruno,
soit tu refais ton propre modèle.
Ce qui implique que tu vas pouvoir vérifier le nombre de ligne et le nombre
de caractère par ligne (par exemple, si il essaye de faire un deuxieme saut
de ligne, cette derniere sera automatiquement effacé avec un son
d'erreur... et si il y a trop de caractères sur une ligne, les caractères
en trop sont également effacés...)

--
Isammoc


Avatar
Thibaut Desmarest
Isammoc wrote:

(Causse Bruno) écrivait
news:1gk40bb.1efpvix1welhtmN%:


Thibaut Desmarest wrote:


Bonjour,

mon problème est le suivant :

dans mon interface graphique, je dois créer un champ de saisie pour un
élément "Adresse". Comme c'est souvent le cas, l'adresse de la personne
doit pouvoir s'écrire sur deux lignes (celà m'est imposé) et donc, adieu
le JTextField.




2 JTextField ?



Ligne adresse et ligne adresse complémentaire, c'est ce qui est courramment
utilisé. Mais si son cahier des charges demande que ce soit un seul champ
avec plusieurs lignes, ce serait peut etre mieux un JTextArea dans un
JScrollPane, non? Ce qui permettra d'avoir toutes les infos (sur autant de
ligne que nécessaire) et de pouvoir également les afficher, sans
rendimensionnement de l'espace pour le JTextArea.




Non vraiment, le coup des deux JTextField pour mettre l'adresse sur 2
lignes ca ne passe pas du tout ;)

En ce qui concerne le JScrollPane j'y avais déjà pensé, mais ca n'a pas
bien marché. Mon JTextArea étant très petit (2 lignes), la ScrollBar
s'affiche "bizarrement", Et ca bug. Donc j'ai écarté cette solution.

Il ne reste plus que l'histoire du document, mais je trouve que c'est
beaucoup de traitement pour une petite fonction, et à vrai dire je ne
suis pas sûr d'avoir bien compris comment implémenter celà.

Sinon j'ai encore une dernière idée, c'est de mettre un écouteur sur la
fenêtre qui écouterait si une touche est enfoncée, et si le JTextArea
isFocused(), alors on incrémente un compteur. Si on atteint la valeur
maximum alors la dernière touche n'est pas prise en compte et on émet
eventuellement un son d'erreur.

Qu'en pensez vous ?

Re-Merci Re-d'avance

Re-Cordialement,


Re-Thibaut



Avatar
jocelyn
Salut,

En ce qui concerne le JScrollPane j'y avais déjà pensé, mais ca n'a pas
bien marché. Mon JTextArea étant très petit (2 lignes), la ScrollBar
s'affiche "bizarrement", Et ca bug. Donc j'ai écarté cette solution.


J'ai pas bien compris ca...
Si tu as la barre de scroll horizontal je comprends que ca pose probleme
si tu n'as que 2 lignes, mais on peut la désactiver il me semble.
J'ai peut-être raté un virage :)

--
Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne
pas devenir un monstre lui-même

Avatar
Thibaut Desmarest
jocelyn wrote:

Salut,


En ce qui concerne le JScrollPane j'y avais déjà pensé, mais ca n'a pas
bien marché. Mon JTextArea étant très petit (2 lignes), la ScrollBar
s'affiche "bizarrement", Et ca bug. Donc j'ai écarté cette solution.



J'ai pas bien compris ca...
Si tu as la barre de scroll horizontal je comprends que ca pose probleme
si tu n'as que 2 lignes, mais on peut la désactiver il me semble.
J'ai peut-être raté un virage :)



Non non c'est pas la barre de Scroll horizontale qui me gêne, je l'ai
bien virée celle là ! C'est la verticale qui passe pas. Comme 2 lignes
c'est très petit en fait y'a que les flèches de la ScrollBar qui
s'affichent et du coup ca bug...

Là je suis parti sur un DocumentListener, mais j'ai une Exception "try
to mutate while in notification" ou un truc dans le genre. Je pense que
c'est parceque j'essaie de modifier le contenu du champ dans la fonction
de l'écouteur. Enfin faut que je vois ça.

Merci,

Thibaut


Avatar
jocelyn
Autant pour moi !
Faut que j'aille prendre un café la :P

--
Celui qui lutte contre des monstres doit prendre garde, dans le combat, à ne
pas devenir un monstre lui-même

"Thibaut Desmarest" a écrit dans le message news:
ci8qoa$1jg1$
jocelyn wrote:

Salut,


En ce qui concerne le JScrollPane j'y avais déjà pensé, mais ca n'a pas
bien marché. Mon JTextArea étant très petit (2 lignes), la ScrollBar
s'affiche "bizarrement", Et ca bug. Donc j'ai écarté cette solution.



J'ai pas bien compris ca...
Si tu as la barre de scroll horizontal je comprends que ca pose probleme
si tu n'as que 2 lignes, mais on peut la désactiver il me semble.
J'ai peut-être raté un virage :)



Non non c'est pas la barre de Scroll horizontale qui me gêne, je l'ai
bien virée celle là ! C'est la verticale qui passe pas. Comme 2 lignes
c'est très petit en fait y'a que les flèches de la ScrollBar qui
s'affichent et du coup ca bug...

Là je suis parti sur un DocumentListener, mais j'ai une Exception "try
to mutate while in notification" ou un truc dans le genre. Je pense que
c'est parceque j'essaie de modifier le contenu du champ dans la fonction
de l'écouteur. Enfin faut que je vois ça.

Merci,

Thibaut




Avatar
Thibaut Desmarest
Thibaut Desmarest wrote:


J'ai trouvé la solution ! J'ai crée une classe qui hérite d'une classe
de document et j'ai surchargé la fonction d'insertion de texte pour
faire des tests avant ajout en utilisant les expressions régulières.
Comme ça on peut même spécifier les caractères autorisés et/ou interdits.

Si ca interesse quelqu'un qui a le même problème que moi d'avoir des
détails, je peux les donner.


Merci à tous,


Thibaut
Avatar
Isammoc
Sinon j'ai encore une dernière idée, c'est de mettre un écouteur sur
la fenêtre qui écouterait si une touche est enfoncée, et si le
JTextArea isFocused(), alors on incrémente un compteur. Si on atteint
la valeur maximum alors la dernière touche n'est pas prise en compte
et on émet eventuellement un son d'erreur.


Euh, tu as pensé au fait que l'on pouvait rester appuyé sur la touche (par
exemple pour tout effacer, la touche backspace) et que de cette facon, tu
n'enleverai qu'un au compteur...

Si c'est seulement le nombre de caractère, tu peux le récupérer
facilement...

Re-Thibaut


--
Isammoc

1 2