Retour à la ligne dans un JTextArea ?

Résolu
tn -  
 tn -
Bonsoir !

J'ai un problème, j'aimerai bien que à chaque passage de la boucle, dans le JTextArea il y est un retour à ligne, mais je n'y arrive pas, j'ai essayer le caractère \n ou encore \r mais ça ne marche pas.

Voici mon code :

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class LevelOnePartOne extends JFrame{
    
    public String[] tab1 = {"the mist","wet","the snow","the rain","the earth"};
    public String[] tab2 = {"la brume","humide","la neige","la pluie","la terre"};  
    public String[] tab3 = {"le brouillard","mouiller","/","la flotte","le monde"};
    public String[] tab4 = {"la buée","mouillé","/","/","le globe terrestre"};
    
    JTextArea message;
    
    public LevelOnePartOne(){
        JPanel jp = new JPanel();
              
        for(int i=0; i<2; i++){
            message = new JTextArea(i+1+") "+tab1[i]+" : "+tab2[i]+", "+tab3[i]+", "+tab4[i]+".\n\n",20,30);
        }
        message.setLineWrap(true);
        message.setFont(new Font("Arial",0,16));
        message.setMargin(new Insets(15,15,15,15));
        message.setEditable(false);
        jp.add(message);
        
        this.setVisible(true);
        this.setResizable(false);
        this.setContentPane(jp);
        this.pack();
        this.setLocationRelativeTo(null);
    }
}


Quelqu'un serait-il m'aider ? Quelqu'un aurait-il une solution ?
Merci pour votre aide !
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonsoir,

Je viens de tester et \n fonctionne bien.

message = new JTextArea(i+1+")"+tab1[i]+" :\n"+tab2[i]+"\n"+tab3[i]+"\n"+tab4[i]+"\n\n",20,30);


Remarque : place ton setVisible(true) à la fin, sinon tu vas voir la fenêtre se redimensionner ou se déplacer à cause des instructions suivantes, ça va faire clignoter ta fenêtre, et c'est moche.
La confiance n'exclut pas le contrôle
0
tn
 
Re:
Merci pour ton aide ! C'est vrai que ça marche bien... mais en fait ce n'est pas cela que j'aurais voulu faire.
J'aimerai bien que le JTextArea puisse donner comme résultat ceci :

1) The mist : la brume, le brouillard, la buée (et à partir d'ici qu'il puisse y avoir un retour à la ligne)
2) wet : humide, mouillé, mouiller
...

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class LevelOnePartOne extends JFrame{
    
    public String[] tab1 = {"the mist","wet","the snow","the rain","the earth"};
    public String[] tab2 = {"la brume","humide","la neige","la pluie","la terre"};  
    public String[] tab3 = {"le brouillard","mouiller","/","la flotte","le monde"};
    public String[] tab4 = {"la buée","mouillé","/","/","le globe terrestre"};
    
    JTextArea message;
    
    public LevelOnePartOne(){
        JPanel jp = new JPanel();
              
        for(int i=0; i<tab1.length; i++){
            message = new JTextArea(i+1+") "+tab1[i]+" : "+tab2[i]+", "+tab3[i]+", "+tab4[i]+".\n\n",20,30);
        }
        message.setLineWrap(true);
        message.setFont(new Font("Arial",0,16));
        message.setMargin(new Insets(15,15,15,15));
        message.setEditable(false);
        jp.add(message);
        
        this.setResizable(false);
        this.setContentPane(jp);
        this.pack();
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }
}


tu aurais une idée ? Merci !
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Le problème c'est que ta boucle remplaces l'objet message à chaque fois, cela créé un nouvel objet JTextArea, mais un seul (le dernier) sera affiché, les autres sont perdus.
Si je comprends bien ce que tu veux, il faudrait soit créer autant de JTextArea que de valeurs dans tes tableaux, soit ajouter le contenu de chacune des lignes au fur et à mesure dans le même JTextArea.
0
tn
 
Merci pour ton aide !
Comment est ce que je peux ajouter des lignes au fur est à mesure dans le même JTextArea ?
J'ai essayé d'une autre manière avec un JTextPane mais il y a le même problème.
Serait tu m'aider pour qu'au résultat le programme affiche chaque composante des tableaux lignes par lignes dans le même JTextArea ou JTextPane ?

Voici les code :

La "base de donnée qui contient les tableaux qui eux-mêmes contiennent les informations"


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class L1P1 extends JFrame{
    
    public String[] tab1 = {"the mist","wet","the snow","the rain","the earth"};
    public String[] tab2 = {"la brume","humide","la neige","la pluie","la terre"};  
    public String[] tab3 = {"le brouillard","mouiller","/","la flotte","le monde"};
    public String[] tab4 = {"la buée","mouillé","/","/","le globe terrestre"};
}



La classe qui affichera le contenue de chaque tableau ligne par ligne dans un JTextArea

Par exemple :
1) the mist : la brume, le brouillard, la buée
2) Wet : humide, mouiller, mouillé
...

import javax.swing.*;
import java.awt.*;
public class LearnL1P1 extends JFrame{
    
    JTextArea message = new JTextArea("",20,30);   
    L1P1 l1p1 = new L1P1();
    
    public LearnL1P1(){
        super("Vocabulary : level 1 - part 1");
        JPanel jp = new JPanel();   
        for(int i=0; i<l1p1.tab1.length; i++){
            message.setText(i+1+") "+l1p1.tab1[i]+" : "+l1p1.tab2[i]+", "+l1p1.tab3[i]+", "+l1p1.tab4[i]+".\n\n");
        }
        message.setLineWrap(true);
        message.setFont(new Font("Arial",0,16));
        message.setMargin(new Insets(15,15,15,15));
        message.setEditable(false);
        jp.add(message);
       
        this.setResizable(false);
        this.setContentPane(jp);
        this.pack();
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }
}


Merci pour votre aide, car je n'arrive pas à afficher les composantes des tableaux ligne par ligne dans le même JTextArea !
0
tn
 
Re KX !
J'ai enfin trouvé la solution !
Au lieu de faire un setText, j'ai fait un append("\n") est le JTextArea afficher correctement le contenu des tableaux !
Merci pour ton aide !
0