Retour à la ligne dans un JTextArea ?

Résolu/Fermé
tn - 5 avril 2014 à 22:42
 tn - 11 avril 2014 à 14:32
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 !

1 réponse

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 5/04/2014 à 22:59
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
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 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
6 avril 2014 à 00:17
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
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
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