[ JAVA ] Retour à la ligne supérieure dans JTextArea

Rodie

Habitué
Hi everybody :pt1cable:

J'ai un JTextArea dans lequel je peux écrire des messages texte. Un "KeyListener" écoute les caractères tapés dans ce JTextArea : chaque fois qu'on tape la touche "Entrée", le texte est effacé dans ce JTextArea, et recopié ailleurs.

Le problème est qu'après avoir tapé "Entrée" le curseur se place dans la 2ème ligne du JTextArea, et je voudrais le faire revenir au début (à la 1ère ligne). J'ai essayé d'insérer "\r", sans succès.

Qu'est ce qui faut que je fait ? :lol:
Merci bien pour votre aide.

Rodie
 

Rodie

Habitué
Pour vider mon JTextArea, je fais tt simplement :
My_TextArea.setText("");
Mais le curseur reste effectivement à la 2ème ligne ... :sweat:
Merci à toi, si tu as une idée

Rodie
 

Rodie

Habitué
Tiens, un peu de code très très simple :merci:
C une application de chat (comme MSN) avec 2 JTextArea :
- Current_message : où t'écris ton message en cours
- Current_conversation : où ton message s'affichera dès ke t'appuies sur "Enter" (contient tout le dialogue avec le correspondant)

[cpp]public void add_text(String message)
{
message = Current_conversation.getText() + ">" + Current_message.getText() + "\n";
Current_message.setText("");
Current_conversation.setText(message);
}

public void keyPressed(KeyEvent evt)
{
if (evt.getKeyCode() == KeyEvent.VK_ENTER)
{
this.add_text(send_message);
}
}[/cpp]

Merci beaucoup à toi ... et désolé, chui un peu en retard pour répondre :pfff:

Rodie :sol:
 

Rodie

Habitué
Tu as raison ... la variable send_message ne sert à rien du tout ici. Pardon, j'ai mal fait l'élagage ... Je te remets le code, encore plus simple tout bien indenté :pt1cable:
[cpp]public void add_text()
{
String message;
message = Current_conversation.getText() + ">" + Current_message.getText() + "\n";
Current_message.setText("");
Current_conversation.setText(message);
}

public void keyPressed(KeyEvent evt)
{
if (evt.getKeyCode() == KeyEvent.VK_ENTER)
{
this.add_text();
}
}[/cpp]
Voilà ... si tu voies comment je peux empêcher d'aller à la ligne dans le JTextArea "Current_message", ce serait génial.
Merci encore à toi :D

Rodie :sol:
 

la7su

Nouveau membre
Essai ca :

[cpp]
public void keyRelease(KeyEvent evt) {
if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
this.addText();
}
}
[/cpp]

Tu prend en compte l'evenement apres que l'appui sur entree ait ete insere dans Current_message.

Ce qu'il te reste a faire (si c'est ce que tu veux), c'est supprime la ligne blanche du texte que tu recuperes avant de l'inserer dans Current_conversation.
 

Rodie

Habitué
Effectivement, je n'ai plus le prob dans la boite "Current_message".
Merci. :bounce:
Seulement, je n'arrive pas à retirer la ligne blanche de "Current_conversation", comme tu le dis.

Et l'autre prob, c que si l'utilisateur maintient la touche "Enter", plein de lignes blanches vont s'accumuler juska ce qu'il relache la touche. Et il y aura plein plein de lignes blanches dans la boite finale "Current_conversation" ... :??:

Encore merci à toi ... et si tu sais comment retirer les lignes blanches, merci de me le dire

Rodie :sol:

 

KangOl

Grand Maître
a toi de verifier si le message n'est pas vide avant de l'envoyer...
en ce qui concerne la ligne blanche, supprime le dernier caractere de la chaine envoyée si elle se termine par enter
 

Rodie

Habitué
Bin en fait, c ça que j'arrive pas à faire : supprimer la ligne blanche envoyée, après avoir appuyé sur "Enter".

Il ne s'agit pas d'un message vide : j'obtiens un message de 2 lignes par exemple, dont 1 ligne est vide (à cause du fait ke j'ai appuyé sur "Enter"). Et je n'arrive pas à supprimer l'effet de la pression sur "Enter".

Je suis pas sûr d'être très clair :(
Merci quand même :D
 

Rodie

Habitué
Ah c bon, ça marche :hello:
En fait, pour supprimer le saut de ligne, il suffit de retirer "\n" dans la fonction add_text()

Et pour répondre à ta kestion FMR-Hunter
[cpp]message = Current_conversation.getText() + ">" + Current_message.getText() + "\n";[/cpp]Ya effectivement un truc bizarre dans cette ligne de code. C un copain qui l'a codé, et en fait, ce qu'il fait :
il prend tout le texte dans Current_conversation, il y ajoute le nouveau message à partir de Current_message : il met le tout dans "message" et il écrase tout l'ancien contenu de Current_conversation avec "message".

ça aurait été plus propre de ne rajouter que le nouveau message dans l'historique de conversation ...

En tout cas, merci bien à tous :pt1cable: :pt1cable:
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 058
Membres
1 586 285
Dernier membre
LeFront
Partager cette page
Haut